覆盖值类型的隐式必需属性

时间:2018-02-16 00:28:30

标签: c# asp.net-mvc asp.net-mvc-5

在ASP.NET MVC 5中,模型上的值类型具有隐式[Required]属性。我确实想要这个功能,但我想调整该属性,即隐式应用不同的属性。

那么如何更改隐式应用于值类型的属性(如果有的话)?

据我所知,我可以这样做:

protected void Application_Start()
{
    // System.Web.Mvc.
    DataAnnotationsModelValidatorProvider.AddImplicitRequiredAttributeForValueTypes = false;
}

然后转到我的每个模型并添加不同的[Required]属性:

public class MyViewModel
{
    [MyRequired]
    public int Amount { get; set; }
}

属性现在只是覆盖了默认的错误信息,将来可能会有很大的不同。

[AttributeUsage(AttributeTargets.Property, Inherited = true, AllowMultiple = true)]
public class MyRequiredAttribute : System.ComponentModel.DataAnnotations.RequiredAttribute
{
    public MyRequiredAttribute()
    {
        if (ErrorMessage == null)
        {
            ErrorMessage = "{0} is required.";
        }
    }
}

有更好的方法吗?

可能有用:System.Web.Mvc.DataAnnotationsModelValidatorProvider.cs

0 个答案:

没有答案