在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