【发布时间】:2012-08-08 22:17:20
【问题描述】:
我有两个单独的视图访问同一个模型。当我将验证器数据注释放在模型上时,它会像宣传的那样工作,如果留空或不在范围内,它会阻止提交数据(对于两个视图)。但是,我有一个视图应该能够允许为属性保存空值或空值,而另一个视图需要在允许它通过之前输入或选择信息。换句话说,我想为一个视图关闭模型中属性的验证器,并为另一个视图保留它。下面是示例代码:
型号:
[Range(1, 999, ErrorMessage = "A submittal is required")]
public int SubmittalId { get; set; }
查看#1:
<label>@Model.AuditDoc.SubmittalsLabel.ConfigurableLabelDesc</label> @Html.ValidationMessageFor(x => x.AuditDoc.SubmittalId) @Html.DropDownListFor(x => x.AuditDoc.SubmittalId, new SelectList(Model.AuditDoc.ListOfSubmittals, "Id", "Name"))
查看#2:
<label>@Model.AuditDoc.SubmittalsLabel.ConfigurableLabelDesc</label> @Html.DropDownListFor(x => x.AuditDoc.SubmittalId, new SelectList(Model.AuditDoc.ListOfSubmittals, "Id", "Name"))
如您所见,我想为 View #2 禁用该验证器数据注释,并为 View #1 保留它。
【问题讨论】:
-
您是否将数据库实体用作视图模型?我可能会从使用单独的视图模型开始..
-
我们实际上使用的是自定义数据库访问层,而不是实体。如果可能的话,我试图避免使用单独的视图模型或模型。这是因为我们使用的是两个视图共享的局部视图。我希望有一种方法可以切换这些数据注释,以便它们可以共享相同的模型和局部视图。
-
对于西蒙的回答,您无法直接尝试执行以下操作。您必须创建两个视图模型或创建自己的自定义验证属性,该属性可以确定何时需要该字段。
标签: c# asp.net asp.net-mvc-3 data-annotations