我想在一个 View 中显示 2 个模型。该页面包含 LoginViewModel
和 RegisterViewModel
。
例如
public class LoginViewModel
{
public string Email { get; set; }
public string Password { get; set; }
}
public class RegisterViewModel
{
public string Name { get; set; }
public string Email { get; set; }
public string Password { get; set; }
}
我需要创建另一个 ViewModel 来保存这 2 个 ViewModel 吗?
public BigViewModel
{
public LoginViewModel LoginViewModel{get; set;}
public RegisterViewModel RegisterViewModel {get; set;}
}
我需要将验证属性带到 View 中。这就是我需要 ViewModel 的原因。
是否还有其他方法,例如(没有 BigViewModel
):
@model ViewModel.RegisterViewModel
@using (Html.BeginForm("Login", "Auth", FormMethod.Post))
{
@Html.TextBoxFor(model => model.Name)
@Html.TextBoxFor(model => model.Email)
@Html.PasswordFor(model => model.Password)
}
@model ViewModel.LoginViewModel
@using (Html.BeginForm("Login", "Auth", FormMethod.Post))
{
@Html.TextBoxFor(model => model.Email)
@Html.PasswordFor(model => model.Password)
}
最佳答案
有很多方法...
与您的 BigViewModel 你这样做:
@model BigViewModel @using(Html.BeginForm()) { @Html.EditorFor(o => o.LoginViewModel.Email) ... }
您可以创建 2 个附加 View
登录.cshtml
@model ViewModel.LoginViewModel @using (Html.BeginForm("Login", "Auth", FormMethod.Post)) { @Html.TextBoxFor(model => model.Email) @Html.PasswordFor(model => model.Password) }
和register.cshtml相同
创建后,您必须在主视图中渲染它们并向它们传递 View 模型/ View 数据
所以它可能是这样的:
@{Html.RenderPartial("login", ViewBag.Login);} @{Html.RenderPartial("register", ViewBag.Register);}
或
@{Html.RenderPartial("login", Model.LoginViewModel)} @{Html.RenderPartial("register", Model.RegisterViewModel)}
使用 ajax 使您的网站部分变得更加独立
iframe
,但情况可能并非如此
关于asp.net-mvc - View 中的多个模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4764011/