0

我真的很迷失为我的 MVC3 应用程序创建自定义通用验证消息。

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

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

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

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

DefaultModelBinder.ResourceClassKey = "My_Resource_Name";

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

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

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

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

4

1 回答 1

0

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

似乎没有一种简单的全局方式来改变它。你可以试试这个,否则看起来你被困在将你的属性添加到每个字段中。或者使用这样的东西:

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; }
}
于 2012-08-28T05:01:57.020 回答