Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Validation 全局本地化验证_Validation_Asp.net Mvc 3_Localization_Attributes_Data Annotations - Fatal编程技术网

Validation 全局本地化验证

Validation 全局本地化验证,validation,asp.net-mvc-3,localization,attributes,data-annotations,Validation,Asp.net Mvc 3,Localization,Attributes,Data Annotations,我正在使用System.ComponeneModel.DataAnnotations属性,如Required和StringLength。是否可以全局定位其错误消息 我知道我能做到 [Required(ErrorMessageResourceName = "Required", ErrorMessageResourceType = typeof(Resources.Validation))] 但在我使用required属性的任何地方这样做都是疯狂的。此外,我希望避免以下情况: public cl

我正在使用System.ComponeneModel.DataAnnotations属性,如Required和StringLength。是否可以全局定位其错误消息

我知道我能做到

[Required(ErrorMessageResourceName = "Required", ErrorMessageResourceType = typeof(Resources.Validation))]
但在我使用required属性的任何地方这样做都是疯狂的。此外,我希望避免以下情况:

public class LocalizedRequiredAttribute : RequiredAttribute {
    public LocalizedRequiredAttribute()
        : base() {
        ErrorMessageResourceName = "Required";
        ErrorMessageResourceType = typeof(Resources.Validation);
    }
}

(但如果没有其他方法,我就满足了)

AFAIK您需要一个自定义属性或指定ErrorMessageResourceName和ErrorMessageResourceType属性。还有一种可能性:

在中创建全局资源类 App_GlobalResources,并设置 DefaultModelBinder.ResourceClassKey到 此类的名称(例如, 如果您创建了“Messages.resx”,则设置 ResourceClassKey到“消息”)

有两个字符串可以重写 在MVC2中:

  • 的字符串值 在以下情况下使用“PropertyValueInvalid” 用户输入的数据不正确 与数据类型兼容(对于 例如,输入“abc”作为 整数字段)。默认消息 对于这是:“值“{0}”不是 对{1}有效。”

  • 的字符串值 在以下情况下使用“PropertyValueRequired” 用户没有输入任何数据用于 不可为空的字段(对于 例如,一个整数字段)。这个 默认消息是:“一个值 是必需的。”

注意这一点很重要 在第二种情况下,如果 这个 DataAnnotationsModelValidatorProvider 在验证程序提供程序列表中 (默认情况下是这样),然后 永远不会看到第二条信息。 此提供程序可以看到非可选字段 并添加一个隐含的[必需的] 归因于他们,使他们的 消息将与其他消息保持一致 带有显式[必填]的字段 属性,以确保 所需的客户端验证 田地


有关MVC3,请参见数据注释资源。它是“RequiredAttribute_ValidationError”等等。 您可以通过安装.NET Framework语言包来解决此问题


另请参见具有相同公认答案的类似问题是否可以在不使用资源文件的情况下替换这些消息?我需要截获生成这些消息的地方,并设置来自DB的本地化错误消息。谢谢