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)
我想你遇到了类似这个问题的事情.
MVC将自动添加必需的验证,GroupId因为int它不是可空类型.添加显式规范时[Required],验证将重复并导致错误.删除[Required]任何本质上不可为空的属性的显式属性,事情应该按预期工作.
或者,如果要阻止自动生成以支持显式[Required]声明,可以添加以下内容,Application_Start如上一个答案所示:
DataAnnotationsModelValidatorProvider.AddImplicitRequiredAttributeForValueTypes = false
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1811 次 |
| 最近记录: |