Bor*_* B. 8 c# data-annotations asp.net-mvc-3
当您使用Required属性修饰模型对象的属性并且未指定ErrorMessage 或者ResourceType/Name以"{0}字段是必需的"的插值形式获得验证消息时,其中param 0是该DisplayName属性的属性的值.
我想将该默认字符串更改为其他内容,但我想保留它的通用性,即我不想指定ErrorMessage或ResourceType/Name模型对象的每个属性.存储的默认字符串在哪里?如何更改它?
您是否尝试过创建RequiredAttribute的派生类并重写FormatErrorMessage方法?这应该工作:
public class MyRequiredAttribute : System.ComponentModel.DataAnnotations.RequiredAttribute
{
public override string FormatErrorMessage(string name)
{
return base.FormatErrorMessage(string.Format("This is my error for {0}", name));
}
}
Run Code Online (Sandbox Code Playgroud)
派生您自己的属性是一个公平的选择,并且开始时可能具有最低的开销,但您需要返回并更改您现有的所有用途[Required].您(以及您团队中的任何其他人)也需要记住使用(并教导新手使用)正确的人.
另一种方法是替换ModelMetadataProviders和ModelValidatorProviders从资源文件返回字符串.这避免了上述缺点.它还为替换其他属性(例如MaxLengthAttribute)的消息和支持其他语言奠定了基础.
protected void Application_Start()
{
var stringProvider = new ResourceStringProvider(Resources.LocalizedStrings.ResourceManager);
ModelMetadataProviders.Current = new LocalizedModelMetadataProvider(stringProvider);
ModelValidatorProviders.Providers.Clear();
ModelValidatorProviders.Providers.Add(new LocalizedModelValidatorProvider(stringProvider));
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3364 次 |
| 最近记录: |