Как использовать две отдельные модели в одном представлении

У меня есть представление под названием Manage.cshtml, и внутри этого представления есть две формы: одна для изменения пароля учетной записи, а другая - для изменения номера мобильного телефона пользователя.

И есть одна модель для пароля, другая для мобильного номера и один метод действия под названием manage (модель ViewModel). Я создал модель представления и поместил в нее модель пароля и модель мобильного номера. Проблема в том, что обе модели имеют обязательные атрибуты. Теперь, если пользователь хочет изменить только свой номер мобильного телефона, это не удастся из-за проверки, поскольку поля пароля имеют обязательные атрибуты.

Как лучше всего разделить две модели и использовать их в одном окне? Я не хочу использовать два отдельных представления.


person Noor Hamdoon    schedule 27.09.2013    source источник
comment
Принцип единой возможности повторного использования - одно представление должно делать одно и только одно.   -  person marc_s    schedule 27.09.2013


Ответы (2)


Вы можете вызвать RenderPartial и передать модель для каждого и включить проверку для каждой формы независимо

Main.cshml

@{ Html.RenderPartial("ChangePwd.cshtml", Model.PasswordModel);  }

@{ Html.RenderPartial("MobileNo.cshtml", Model.MobileModel);  }

ChangePwd.cshtml

 @{Html.EnableClientValidation();}
 @using (Html.BeginForm("ChangePwd", "Admin", FormMethod.Post))
 {


 }
person Murali Murugesan    schedule 27.09.2013

Правильный способ - создать 2 отдельных представления и объединить их в одно представление с помощью RenderView ИЛИ RenderAction.

Создайте следующие представления:

ChangePassword.cshtml

ChangeMobileNumber.cshtml

затем создайте представление с именем Manage.cshtml и обратитесь к двум приведенным выше представлениям.

person CreativeManix    schedule 27.09.2013