asp.net-mvc - View 中的多个模型

标签 asp.net-mvc asp.net-mvc-3

我想在一个 View 中显示 2 个模型。该页面包含 LoginViewModelRegisterViewModel

例如

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)
 }

最佳答案

有很多方法...

  1. 与您的 BigViewModel 你这样做:

    @model BigViewModel    
    @using(Html.BeginForm()) {
        @Html.EditorFor(o => o.LoginViewModel.Email)
        ...
    }
    
  2. 您可以创建 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)}
    
  3. 使用 ajax 使您的网站部分变得更加独立

  4. iframe,但情况可能并非如此

关于asp.net-mvc - View 中的多个模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4764011/

相关文章:

c# - ASP.NET MVC 上传文件超时

asp.net-mvc - 在 Web API 中执行操作后更改返回的对象值

asp.net-mvc - (MVC 3 Razor) - 循环遍历 3 列 div 的更简单方法

asp.net-mvc - 指定的包含路径无效。 EntityType 未声明具有名称的导航属性

asp.net-mvc - MVC Ajax 与 Ajax.ActionLink

ASP.NET MVC 3 的 jquery ajax 表单

asp.net-mvc - Asp.Net MVC 中带有千位分隔符的十进制值

c# - 通过 ActionLink 提交 Ajax.BeginForm

c# - 使用 EF4(edmx 模型)时偶尔出现 "The underlying provider failed on Open"错误

mysql - 合并 3 个 SQL 查询,正确的连接是什么?