ASP.NET MVC3 在视图中同时使用模型和自定义验证模型

本文关键字:模型 验证 自定义 MVC3 NET 视图 ASP | 更新日期: 2023-09-27 17:56:16

我有一个这样的视图(遗漏了不重要的东西):

@model MyProject.Models.Accounts
        <div class="editor-label">
            @Html.LabelFor(model => model.Name)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.Name)
        </div>

现在,我有一个单独的模型要用于验证。是否可以在视图中同时使用我的数据模型和此验证模型?像这样:

@model MyProject.Models.Accounts
@validaitonmodel MyProject.Models.AccountValidationModel
            <div class="editor-label">
                @Html.LabelFor(model => model.Name)
            </div>
            <div class="editor-field">
                @Html.EditorFor(model => model.Name)
                @Html.ValidationMessageFor(validationmodel => validationmodel.Name)
            </div>

提前谢谢。

编辑

我所说的"模型"是指由.edmx自动生成的模型(Ado.net 自跟踪实体)

通过验证模型,我的意思是这样的自定义类:

public class AccountValidationModel
{
    [Required]
    public String Name {get; set;}
}

ASP.NET MVC3 在视图中同时使用模型和自定义验证模型

我认为通常更容易接受的做法是:

  1. 将属性添加到数据模型。
  2. 将视图绑定到单独的 ViewModel(在本例中为 AccountValidationModel),并使用映射器工具(如自动映射器)在两个模型之间映射数据。

也许元数据类型属性可以帮助你? http://msdn.microsoft.com/en-us/library/ee256141.aspx

验证模型必须

实现所有属性以进行验证,并且必须对模型本身应用元数据类型属性。

来自堆栈溢出的快速样本:ASP.Net 基于元数据类型的C#验证模型

或者,像那个人一样,寻找另一种通过流畅验证进行验证的方法(从未尝试过)http://fluentvalidation.codeplex.com/wikipage?title=mvc&referringTitle=Documentation