1

例如,如果我有 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 做到这一点,或者我应该只是自定义视图?

4

1 回答 1

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; }

以下是有关 RequiredAttribute 类和您可以设置的所有属性的更多信息。

编辑:根据您在编辑中添加的代码,我会说不,我认为 DataAnnotations 不支持您的要求。但是,如果您使用不显眼的 jQuery 验证,一个简单的技巧是在data-val-required使用 javascript 呈现页面后更新编辑器上的属性。它看起来像:

$("#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" })
于 2013-05-09T13:57:06.173 回答