必需属性不显示

时间:2012-10-17 14:10:52

标签: asp.net-mvc-3

Public Class Duration 
{
  [Required]
  Public DurationUnit Unit
  [Required]
  Public int Length
}

Public Class Employee
{
  [RequiredAttribute]
  public virtual Duration NotificationLeadTime { get; set; }
}

字段 Unit Length ,如果未提供,则会以红色突出显示,但错误消息未显示。

我也尝试给[Required(ErrorMessage="sadfdsf")],但这也无效。 我也尝试用IValidatableObject继承该类,但这也没有用。

如何显示错误消息?

1 个答案:

答案 0 :(得分:3)

您应该使用属性,而不是字段:

public class Duration 
{
    [Required]
    public DurationUnit Unit { get; set; }

    [Required]
    public int Length { get; set; }
}

要显示相应的错误消息,请使用Html.ValidationMessageFor帮助程序。

例如:

@Html.EditorFor(x => x.NotificationLeadTime.Unit)
@Html.ValidationMessageFor(x => x.NotificationLeadTime.Unit)

顺便说一下,使用int属性装饰不可为空的类型(如[Required])并不合理,因为这些类型总是有默认值。你应该把它变成一个可以为空的整数。如果DurationUnit是枚举,则DurationUnit属性的相同注释代表。