Html.TextBoxFor正则表达式不起作用

时间:2014-11-17 12:34:23

标签: javascript html regex asp.net-mvc-4

我有两位帮手:Html.TextBoxHtml.TextBoxFor

Html.TextBox(someId, someValue, new { @class = "text-box single-line numericPropertyValue",  regexp=@"^(-?\d{0,9}([.]\d{0,5})?)?$", minValue = someMinValue, maxValue = someMaxValue, invalidValueMessage = ValidationMessages.ValueIsIncorrect(), invalidRangeMessage = ValidationMessages.InvalidRangeMessage(someMinValue, someMaxValue) })

这个指定预算并允许我仅输入digits.digits并且工作正常。

另一个是Html.TextBoxFor

 Html.TextBoxFor(x => x.some.Name, new { @class = "text-box single-line numericPropertyValue", regExp = @"^[a-zA-Z0-9]", invalidValueMessage = "value is invalid" })

这个指定某个项目的名称,没关系。但我的正则表达不起作用。但是,如果我从第一个Html.TextBox放置正则表达式,它仍然无法正常工作并允许我输入所有内容。

你知道我的TextBoxFor有什么问题吗? 非常感谢。

1 个答案:

答案 0 :(得分:2)

因为传递regExp没有做任何事情。该匿名对象的成员最终作为输入上的HTML属性,regExp不是有效的HTML属性。如果您希望使用浏览器提供的客户端验证,请使用pattern。但请注意,pattern仅在现代浏览器(IE10 +)中受支持。因此,您需要为功能较弱的浏览器提供备用服务。