0

我可以在 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

4 回答 4

2

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

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

它在客户端工作

于 2013-11-05T15:44:31.290 回答
0

您可以尝试使用以下Range属性:

[Range(float.MinValue, float.MaxValue, ErrorMessageResourceName = "IncorrectFloat", ErrorMessageResourceType=typeof(Resources))]
public float MyFloat { get; set; }
于 2013-02-08T16:34:05.743 回答
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}.")
});

那应该本地化您的消息。

于 2013-02-14T05:08:47.830 回答
0

这是一个事件顺序的问题。框架与您的自定义框架。

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

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

希望这可以帮助。

于 2013-02-14T02:27:44.480 回答