本地化asp.net mvc注释

时间:2013-02-08 16:09:50

标签: asp.net-mvc localization data-annotations

我可以在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必须是数字。

我搜索了所有属性以找到更改此消息的属性,但我不能。你有什么想法吗?提前谢谢。

4 个答案:

答案 0 :(得分:1)

我发现添加此数据注释更容易:

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

它适用于客户端

答案 1 :(得分:0)

您可以尝试使用Range属性:

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

答案 2 :(得分:0)

这是一系列事件的问题。框架与您的自定义框架。

您收到的默认消息已深入构建到框架中。它是一个字符串资源。默认模型绑定器在将字符串值绑定到double类型时添加它。这显然是在之前进行自定义验证,因此您首先收到此默认错误消息。

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

希望这有帮助。

答案 3 :(得分: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}.")
});

应该将您的邮件本地化。