Asp.Net MVC 2 - 更改PropertyValueRequired字符串

时间:2010-06-14 19:27:37

标签: asp.net-mvc asp.net-mvc-2 asp.net-mvc-3

使用App_GlobalResources目录中的resx文件,我已经能够更改模型验证器的PropertyValueInvalid字符串的默认消息。

但是当需要值时,它无法转换消息(PropertyValueRequired。)

在Global.asax.cs Application_Start()中,我更改了资源类键,如下所示:

DefaultModelBinder.ResourceClassKey = "Messages";

在Messages.resx文件中,我放了两个条目:

  • “PropertyValueInvalid”=> “O valor'{0}'éinválidoparao campo {1}。”
  • “PropertyValueRequired”=> “Éadmandáriigiditaro {0}。”

感谢。

3 个答案:

答案 0 :(得分:17)

RequiredAttribute未使用DefaultModelBinder.GetValueRequiredResource。 创建自定义DataAnnotationsModelValidator类。

public class MyRequiredAttributeAdapter : RequiredAttributeAdapter
{
  public MyRequiredAttributeAdapter(ModelMetadata metadata, 
                                    ControllerContext context, 
                                    RequiredAttribute attribute) 
         : base(metadata, context, attribute)
  {
    attribute.ErrorMessageResourceType = typeof (Messages);
    attribute.ErrorMessageResourceName = "PropertyValueRequired";
  }
}

并在Global.asax中注册适配器。

DataAnnotationsModelValidatorProvider.RegisterAdapter(
    typeof(RequiredAttribute), 
    typeof(MyRequiredAttributeAdapter));

希望这有帮助!

Reusable Validation Error Message Resource Strings for DataAnnotations

答案 1 :(得分:9)

此邮件已放入密钥System.ComponentModel.DataAnnotations下的RequiredAttribute_ValidationError程序集中。您可以编写自定义验证属性:

public class MyRequiredAttribute : RequiredAttribute
{
    public MyRequiredAttribute()
    {
        ErrorMessageResourceType = typeof(Messages);
        ErrorMessageResourceName = "Required";
    }
}

然后在Messages.resx文件中定义Required字符串:

Required => É necessário digitar o {0}.

最后用这个自定义属性装饰你的视图模型属性:

public class MyViewModel
{
    [MyRequired]
    public int Foo { get; set; }
}

答案 2 :(得分:0)

怎么样

[Required (ErrorMessageResourceName="Required",ErrorMessageResourceType=typeof(Messages)]

public string Foo { get; set; }

Required => É necessário digitar o {0}.

或者

Required => {0} field is required.

请参阅以下链接以获取完整的asp.net mvc本地化指南 asp.net mvc localisation guide