如何在同一视图中使用两个单独的模型

时间:2013-09-27 09:53:50

标签: asp.net-mvc asp.net-mvc-viewmodel

我有一个名为Manage.cshtml的视图,在此视图中有两种形式,一种用于更改帐户密码,另一种用于更改用户的手机号码。

还有一个用于密码的模型和另一个用于移动号码的模型和一个名为manage(ViewModel模型)的操作方法我创建了一个视图模型并将密码模型和移动号码模型放入其中。问题是两个模型都有必需的属性。现在,如果用户只想更改他的手机号码,那么由于验证不会成功,因为密码字段是必需的属性。

将两个模型分开并在同一视图中使用它们的最佳方法是什么?我不想使用两个单独的视图。

2 个答案:

答案 0 :(得分:3)

您可以调用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))
 {


 }

答案 1 :(得分:0)

正确的方法是创建2个单独的视图,并使用 RenderView RenderAction

将它们合并到单个视图中

创建以下视图:

ChangePassword.cshtml

ChangeMobileNumber.cshtml

然后创建名为Manage.cshtml的视图并参考上面的2个视图。