【问题标题】:MVC3 Error message globalizationMVC3 错误信息全球化
【发布时间】:2012-08-28 02:12:17
【问题描述】:

在为我的 MVC3 应用程序创建自定义通用验证消息时,我真的迷失了方向。

我阅读了许多教程,其中大部分都建议了以下选项之一:

  1. 创建一个 App_GlobalResources 文件夹并在其中放置我的自定义资源,我更改 global.asax,将我的资源的字符串名称传递给 DefaultModelBinder.ResourceClassKey 属性。将资源的构建操作更改为“嵌入式资源”。

  2. 右键单击项目,然后转到属性,单击“资源”选项卡并创建您的自定义资源。将其访问修饰符设置为“Public”。

第一个对我不起作用,我的资源中有以下键: DefaultModelBinder_ValueRequired、InvalidPropertyValue、PropertyValueInvalid、PropertyValueRequired 当我尝试在模型的必需属性中提交并使用空值形成时,它们都没有使用。 我已将此代码放在 global.asax Application_Start 方法中:

DefaultModelBinder.ResourceClassKey = "My_Resource_Name";

使用 second 方法,我创建了一个与第一个具有相同键的资源。当属性无效或为空时,默认情况下不使用它们(我也更改了 global.asax 中的 ResourceClassKey,但没有成功)。但是当我在模型中为数据注释添加一些参数时:

[Required(ErrorMessageResourceType = typeof(MyResourceFile), ErrorMessageResourceName = "MyCustomKey")]

当该数据注释的属性为空时,使用我用“MyCustomKey”定义的消息!

但我真的不想手动将其设置为我的所有属性,我想替换默认错误消息,例如:“{0} 字段是必需的。”

【问题讨论】:

    标签: asp.net-mvc-3 validation globalization global-asax


    【解决方案1】:

    该消息是DataAnnotations 的一部分。默认消息编译成System.ComponentModel.DataAnnotations.Resources.DataAnnotationsResources.resources下资源文件中的DataAnnotations assembly,为RequiredAttribute_ValidationError=The {0} field is required。您可以尝试下载源代码,更改该部分并重新构建它。

    似乎没有一种简单的全局方式来改变它。您可以尝试this,否则您似乎无法将属性添加到每个字段。或者使用这样的东西:

    public class SomeModel
    {
        [Required(ErrorMessage = "The article is required")]
        public string Article { get; set; }
    
        [StringLength(512, ErrorMessage = "Must be less than 512 characters.")]
        public string URL { get; set; }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多