当您拥有相同模型的集合时,是否可以覆盖验证ErrorMessage?

时间:2013-05-09 13:47:13

标签: c# asp.net-mvc data-annotations

例如,如果我有一个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执行此操作,还是应该只是自定义视图?

1 个答案:

答案 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" })