MVC3 - 复杂模型,属性具有相同的字段名称,无法呈现模型

use*_*895 5 model asp.net-mvc-3

我需要帮助渲染复杂的模型.

我有一个具有2个类属性的复杂模型.所有3个类(AddProjectQnrModel,ProjectModel,QTModel)都具有GroupId和GroupName属性.

public class AddProjectQnrModel
    {
        [Required]
        public int GroupId { get; set; }

        public string GroupName { get; set; }

        public ProjectModel Project { get; set; }

        public QCTModel QCT { get; set; }
    }
Run Code Online (Sandbox Code Playgroud)

在视图中我使用编辑器模板:

@Html.EditorFor(x => x.Project, "_EditProject.cshtml")
@Html.EditorFor(x => x.QCT, "_QCT-v1.cshtml")
Run Code Online (Sandbox Code Playgroud)

我不能使用@ html.Partial,因为它不会正确绑定属性,所以我必须使用编辑器模板.

在运行项目时,我收到此错误:

不显眼的客户端验证规则中的验证类型名称必须是唯一的.以下验证类型不止一次出现:必需

描述:执行当前Web请求期间发生未处理的异常.请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息.

异常详细信息:System.InvalidOperationException:不显眼的客户端验证规则中的验证类型名称必须是唯一的.以下验证类型不止一次出现:必需

Source Error: 

Line 26: 
Line 27:         @Html.EditorFor(x => x.Project, "_EditProject.cshtml")
Line 28: 
Line 29:         
Run Code Online (Sandbox Code Playgroud)

Dav*_*tka 6

我想你遇到了类似这个问题的事情.

MVC将自动添加必需的验证,GroupId因为int它不是可空类型.添加显式规范时[Required],验证将重复并导致错误.删除[Required]任何本质上不可为空的属性的显式属性,事情应该按预期工作.

或者,如果要阻止自动生成以支持显式[Required]声明,可以添加以下内容,Application_Start如上一个答案所示:

DataAnnotationsModelValidatorProvider.AddImplicitRequiredAttributeForValueTypes = false
Run Code Online (Sandbox Code Playgroud)