我有两位帮手:Html.TextBox
和Html.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
有什么问题吗?
非常感谢。
答案 0 :(得分:2)
因为传递regExp
没有做任何事情。该匿名对象的成员最终作为输入上的HTML属性,regExp
不是有效的HTML属性。如果您希望使用浏览器提供的客户端验证,请使用pattern
。但请注意,pattern
仅在现代浏览器(IE10 +)中受支持。因此,您需要为功能较弱的浏览器提供备用服务。