使用数据注释覆盖默认的双重错误消息

时间:2011-05-19 17:59:21

标签: asp.net-mvc

在我的视图模型中,我有一个非常简单的成员,

[RegularExpression(@"^[0-9\.]*$", 
   ErrorMessage = "The only value you can enter here is a number")]
public double salary{ get; set; }

但是当我在文本框中输入类似'abc'的值时,我收到此错误消息,

  

值'abc'对薪水无效。

这不是我定义的错误消息。是否存在某些默认行为,您无法使用注释覆盖?我是否必须编写自定义验证器?

2 个答案:

答案 0 :(得分:3)

在对正则表达式验证字段之前,会对其进行验证以确保它是正确的类型。由于'abc'无法转换为double,因此您会收到该错误消息。

您可以将salary作为字符串,然后将其解析为控制器中的双精度,这将阻止转换,并在输入无效值时显示正则表达式错误消息。

否则,使用Html.ValidationMessageFor覆盖验证消息

@Html.ValidationMessageFor(m => m.salary, "The only value you can enter here is a number")

答案 1 :(得分:1)

RegularExpression应该用于字符串类型,它不会被调用为double类型,因为首先不能将'abc'分配给double。