我需要帮助渲染复杂的模型。
我有一个包含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; }
}
在视图中我使用的是编辑器模板:
@Html.EditorFor(x => x.Project, "_EditProject.cshtml")
@Html.EditorFor(x => x.QCT, "_QCT-v1.cshtml")
我不能使用@ html.Partial,因为它不会正确绑定属性,所以我必须使用编辑器模板。
在运行项目时出现此错误:
不显眼的客户端验证规则中的验证类型名称必须是 独特。以下验证类型不止一次出现: 需要
描述:执行期间发生了未处理的异常 当前的网络请求。请查看堆栈跟踪了解更多信息 有关错误的信息以及它在代码中的起源。
异常详细信息:System.InvalidOperationException:验证类型 不引人注目的客户端验证规则中的名称必须是唯一的。该 以下验证类型被多次出现:必需
Source Error:
Line 26:
Line 27: @Html.EditorFor(x => x.Project, "_EditProject.cshtml")
Line 28:
Line 29:
答案 0 :(得分:6)
我认为你遇到了与this issue类似的事情。
MVC会自动为GroupId
添加必需的验证,因为int
不是可空类型。当您添加[Required]
的显式规范时,验证将重复并导致您的错误。删除任何本质上不可为空的属性的显式[Required]
属性,并且事情应该按预期工作。
或者,如果您想阻止自动生成支持明确的[Required]
声明,您可以将以下内容添加到Application_Start
,如此{{3 }}:
DataAnnotationsModelValidatorProvider.AddImplicitRequiredAttributeForValueTypes = false