在我的视图模型中,我有一个非常简单的成员,
[RegularExpression(@"^[0-9\.]*$",
ErrorMessage = "The only value you can enter here is a number")]
public double salary{ get; set; }
但是当我在文本框中输入类似'abc'的值时,我收到此错误消息,
值'abc'对薪水无效。
这不是我定义的错误消息。是否存在某些默认行为,您无法使用注释覆盖?我是否必须编写自定义验证器?
答案 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。