Две формы, одна страница. Просмотр модели, Model или что-то еще?

#c# #model-view-controller #model #viewmodel

#c# #model-view-controller #Модель #viewmodel

Вопрос:

У меня есть компонент, который занимается загрузкой изображений, он отлично работает, когда в своей собственной форме это представление, привязанное к модели представления, сопоставленное с основной моделью в контроллере, и аналогично у меня есть стандартное представление, которое привязано к простой модели представления, а затем сопоставлено с основной моделью и сохранено.

Итак, оба они прекрасно работают как отдельные страницы, однако я стремлюсь представить их пользователю на одной странице — и я полностью застрял.

У меня есть две разные модели представления, необходимые для этой одной страницы, и я просто не уверен, как двигаться дальше и как их объединить.

Я попытался создать новую Viewmodel, которая в основном содержит две другие модели представления, но при отправке любой из форм ModelState.IsValid всегда возвращает false, поскольку некоторые из требуемых данных в других полях отсутствуют.

Избавившись от ModelState.IsValid , приложение работает нормально, но как новичок в MVC, я чувствую себя немного неловко из-за этого и просто интересно, может ли кто-нибудь мне помочь?

(И если для этого действительно требуется новая ViewModel с ViewModel для каждой формы, бонусные баллы, если вы можете подсказать мне хорошее соглашение об именовании, поскольку те немногие, которые я пробовал, выглядят действительно грязно!)

Ответ №1:

Вы могли бы попробовать использовать частичные представления.

 <div>
    @Html.Partial("FormA")
</div>
<div>
    @Html.Partial("FormB")
</div>
  

Тогда в FormA.cshtml у вас будет:

 @model Namespace.FormAViewModel
<form> </form>
  

И затем аналогично для FormB

Комментарии:

1. Мне пришлось переделать / перепроектировать огромный раздел кода, но я вижу, что это ОГРОМНОЕ улучшение и то, что я должен был использовать все это время… Соглашения об именовании сводят меня с ума, поскольку сейчас есть дополнительные модели / сложности, но это всего лишь семантика — главное, что на самом деле работает. Спасибо!

2. Одна вещь, которая мне нравится в использовании partials, заключается в том, что когда вы хотите что-то изменить, вы просто находите этот частичный вид и меняете его там, тогда как если все это находится на одной странице, вам придется прокручивать ее в поисках.