例如,如果我有一个2人对象作为视图的一部分......
一个是父母,另一个是孩子,我不希望错误信息两次说“性别是必填字段”,而是说“请提供孩子的性别”等。
public class Person
{
[Required(ErrorMessage="Please provide a gender")]
public char gender;
}
然后是另一个对象:
public class ParentChild
{
public Person parent;
public Person child;
}
在视图中它就像
@HTML.EditorFor(model.parent.gender)
@HTML.EditorFor(model.child.gender)
有没有办法使用DataAnnotations执行此操作,还是应该只是自定义视图?
答案 0 :(得分:1)
我不是我可以尝试的地方,但是,我相信你可以做到。我认为DataAnnotations命名空间中的大多数(或全部?)属性都包含ErrorMessage属性。所以,你应该能够做到这样的事情:
[Required(ErrorMessage="Please provide parent's gender")]
public char ParentGender { get; set; }
[Required(ErrorMessage="Please provide child's gender")]
public char ChildGender { get; set; }
Here's有关RequiredAttribute类的更多信息以及您可以设置的所有属性。
修改:根据您在编辑中添加的代码,我会说不,我不认为DataAnnotations支持您的要求。但是,如果您使用不显眼的jQuery验证,一个简单的hack就是在使用javascript呈现页面后更新编辑器上的data-val-required
属性。它看起来像是:
$("#your-child-element")
.attr("data-val-required", "Please provide child's gender");
您也可以尝试在视图中设置它,但我不确定RequiredAttribute是否会覆盖您提供的内容:
@HTML.EditorFor(model.child.gender,
new { data_val_required = "Please provide child's gender" })