Par*_*ara 10 validation asp.net-mvc
我是asp.net的新手,我有一个问题.当用户在编辑器中插入除数字以外的十进制字段时,他们会收到错误"字段名称"不是数字.但我不希望他们收到此消息,我希望他们收到另一条消息.对于必需和范围验证器,我没有问题.我有什么方法可以做到这一点吗?
我没有提到改变文化只是显示另一条消息.
谢谢.
And*_*ich 13
希望我理解你的,改变RangeValidator
ErrorMessage
初始化ErrorMessage
参数:
[Range(0, 100, ErrorMessage = "Some another error message insert here!")]
[RegularExpression("\d", ErrorMessage = "!!!")]
public decimal DecimalField { get; set; }
Run Code Online (Sandbox Code Playgroud)
这是实际的答案:
创建一个类CustomClientDataTypeModelValidatorProvider
.从MVC源复制代码.更改方法MakeErrorString
以输出适当的消息,如下所示:
private static string MakeErrorString(string displayName)
{
return string.Format(
CultureInfo.CurrentCulture,
Core.Resources.Errors.EroareNuENr,
displayName);
}
Run Code Online (Sandbox Code Playgroud)
我找不到一种方法来复制代码只是扩展它,因为它使用这种静态方法.如果有人知道这个,请告诉我.
然后,在global.asax中,我写了这个:
var cdProvider = ModelValidatorProviders.Providers.SingleOrDefault(p => p.GetType().Equals(typeof(ClientDataTypeModelValidatorProvider)));
if(cdProvider != null)
{
ModelValidatorProviders.Providers.Remove(cdProvider);
ModelValidatorProviders.Providers.Add(
new CustomClientDataTypeModelValidatorProvider());
}
Run Code Online (Sandbox Code Playgroud)
所以流实际上会路由到我的类而不是asp.net MVC dll中的类
我从这里得到了这个想法: