2013-02-08 182 views
0

我可以本地化asp.net mvc中的大部分数据注释。但是,对于其中一些我不行。例如看这一个:本地化asp.net mvc注释

public class TestModel { 
    [Required(ErrorMessageResourceName="MyFloat",ErrorMessageResourceType=typeof(MyResource))] 
    [Display(Name = "MyFloat", ResourceType = typeof(MyResource))] 
    public float MyFloat { get; set; } 
} 

正如你所看到的,我可以本地化RequiredDisplay属性。但是,如果最终用户在字段中键入字符串,验证器会抛出此消息的错误:

字段MyFloat必须是数字。

我搜索了所有的属性来找到一个属性来改变这个消息,但我不能。请问你有什么想法吗?提前致谢。

+0

我发现了一些信息,可以帮助你在这里 - http://stackoverflow.com/questions/5395040/global-localize-validation/5395297#5395297 – Trax72 2013-02-08 16:35:46

+0

这里有一个可能的解决方案:http://stackoverflow.com/questions/12099466/the-field-must-be-a-number-how-can-change-this- message-to-another-language – stralsi 2013-02-08 16:35:59

+0

尝试在浏览器中禁用脚本,看看它是否按预期工作 - 这可能是jQuery验证,覆盖你的字符串。 – OakNinja 2013-02-09 00:32:09

回答

0

您可以与Range属性尝试:

[Range(float.MinValue, float.MaxValue, ErrorMessageResourceName = "IncorrectFloat", ErrorMessageResourceType=typeof(Resources))] 
public float MyFloat { get; set; } 
+0

这不起作用 – Nick 2013-11-05 14:48:28

0

这是事件序列的问题。框架与你的自定义的。

您收到的默认消息深入到框架中。这是一个字符串资源。当绑定字符串值为double类型时,默认模型绑定器正在添加它。这显然是之前你的自定义验证,因此你得到这个默认的错误消息。

要更改此行为,您可能需要编写一个自定义模型绑定器。 如何创建自定义模型绑定器的示例是here

希望这会有所帮助。

0

如果是客户端你担心眼前这个既添加到jquery.validate.js文件的末尾或者在一个单独的JavaScript文件,并参考其右后:

jQuery.extend(jQuery.validator.messages, { 
    required: "Este campo es obligatorio.", 
    remote: "Por favor, llenar este campo.", 
    email: "Debe escribir una dirección de correo válida", 
    url: "Debe escribir una dirección válida.", 
    date: "Debe escribit una fecha válida.", 
    dateISO: "Debe escribit una fecha (ISO) válida.", 
    number: "Debe escribir un número válido.", 
    digits: "Por favor, esribir sólo dígitos.", 
    creditcard: "Debe escribir un número de tarjeta válido.", 
    equalTo: "Por favor, escribir el mismo valor nuevamente.", 
    accept: "Por favor, escribir un valor con una extensión aceptada.", 
    maxlength: jQuery.validator.format("Por favor, no escribir más de {0} caracteres."), 
    minlength: jQuery.validator.format("Por favor, no escribir menos de {0} caracteres."), 
    rangelength: jQuery.validator.format("Por favor, escribir un valor entre {0} y {1} caracteres."), 
    range: jQuery.validator.format("Por favor, escribir un valor entre {0} y {1}."), 
    max: jQuery.validator.format("Por favor, escribir un valor menor o igual a {0}."), 
    min: jQuery.validator.format("Por favor, escribir un valor mayor o igual a {0}.") 
}); 

应本地化您的消息。

+0

注意:这是硬编码jquery.validate本地化的最简单方法。对于具有多个可能本地化的项目,我有一个包含所有本地化.js文件(validate-es.js,validate-us.js等)的文件夹,并决定从BundleConfig方法和Web上配置的区域设置中显示哪一个文件夹。配置 – amhed 2013-02-14 05:12:42

1

我发现它容易,只需添加此数据注释:

[RegularExpression(@"^[0-9]+$", ErrorMessageResourceName="MyFloat",ErrorMessageResourceType=typeof(MyResource))] 

它的工作原理客户端