我有两个助手: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
有什么问题吗?
非常感谢。
最佳答案
因为传递 regExp
没有任何作用。该匿名对象的成员最终作为您输入的 HTML 属性,而 regExp
不是有效的 HTML 属性。如果您希望使用浏览器提供的客户端验证,请改用 pattern
。但是,请注意 pattern
仅在现代浏览器 (IE10+) 中受支持。因此,您需要为功能较弱的浏览器提供回退。
关于javascript - Html.TextBoxFor 正则表达式不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26972839/