【发布时间】:2011-01-25 21:41:24
【问题描述】:
如何使用数据注解对模型进行条件验证?
例如,假设我们有以下模型(Person 和 Senior):
public class Person
{
[Required(ErrorMessage = "*")]
public string Name
{
get;
set;
}
public bool IsSenior
{
get;
set;
}
public Senior Senior
{
get;
set;
}
}
public class Senior
{
[Required(ErrorMessage = "*")]//this should be conditional validation, based on the "IsSenior" value
public string Description
{
get;
set;
}
}
还有以下观点:
<%= Html.EditorFor(m => m.Name)%>
<%= Html.ValidationMessageFor(m => m.Name)%>
<%= Html.CheckBoxFor(m => m.IsSenior)%>
<%= Html.ValidationMessageFor(m => m.IsSenior)%>
<%= Html.CheckBoxFor(m => m.Senior.Description)%>
<%= Html.ValidationMessageFor(m => m.Senior.Description)%>
我想成为基于“IsSenior”属性选择的“Senior.Description”属性条件必填字段(true -> 必需)。如何在 ASP.NET MVC 2 中使用数据注释实现条件验证?
【问题讨论】:
-
我最近问过类似的问题:stackoverflow.com/questions/2280539/…
-
我很困惑。
Senior对象始终是高级对象,那么在这种情况下,为什么 IsSenior 可以为假。当Person.IsSenior为假时,您是否只需要'Person.Senior' 属性为空。或者为什么不按如下方式实现IsSenior属性:bool IsSenior { get { return this.Senior != null; } }。 -
Steven:“IsSenior”转换为视图中的复选框字段。当用户选中“IsSenior”复选框时,“Senior.Description”字段成为必填项。
-
达林·迪米特洛夫:不错,但不完全是。您看,您将如何实现将错误消息附加到特定字段?如果在对象级别进行验证,则会在对象级别收到错误。我需要属性级别的错误。
标签: c# asp.net-mvc forms validation