c# - MVC3 : How to change the generic [Required] validation message text?

标签 c# asp.net-mvc-3 data-annotations

当您使用 Required 属性修饰模型对象的属性并且未指定 ErrorMessageResourceType/Name 时,您会收到验证消息在“{0} 字段是必需的。”的插值形式中,其中参数 0 是该属性的 DisplayName 特性的值。

我想将该默认字符串更改为其他内容,但我想保留它的通用性质,即我不想指定 ErrorMessageResourceType/Name 模型对象的每个属性。默认字符串存储在哪里?如何更改?

最佳答案

派生您自己的属性是一个合理的选择,并且可能具有最低的入门开销,但您需要返回并更改您对 [Required] 的所有现有使用。您(以及您团队中的任何其他人)还需要记住使用(并教新人使用)正确的方法。

另一种方法是替换 ModelMetadataProvidersModelValidatorProviders 以从资源文件返回字符串。这避免了上述缺点。它还为替换其他属性的消息(例如 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));
}

这是完整的 source , documentation , 和一个 blog post描述用法。

关于c# - MVC3 : How to change the generic [Required] validation message text?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10317259/

相关文章:

c# - Dependent 和 Principal 角色中的 Code First Foreign Key 错误

c# - 如何添加、编辑和删除集合中的项目?

asp.net-mvc - ASP.NET MVC 3 路由问题

controller - Asp.net Core 中多个声明的基于声明的授权

c# - 在使用两个 SDK 的 ASP 站点中使用同一 DLL 的两个不同版本

c# - 使用 linq 查询填充列表框 - 值未设置

asp.net - 在 css :hover as a background image 中请求时如何提供文件

c# - 水平滚动时 Telerik Grid 样式不正确

c# - 来自类的 DataAnnotations 验证

c# - 将数据注释与 Resources.Messages C# 结合使用