【发布时间】:2012-05-25 07:06:09
【问题描述】:
当 MVC 将代码写入客户端时,我从 MVC 的 [RegularExpression] 验证器中获取了一个 HTML 编码值。这不是错误消息的问题(因为它应该被编码以供以后显示),但它确实搞砸了正则表达式:) 在字符串字段上,我的正则表达式如下所示:
[RegularExpression(@"^[^\<\>]*$", ErrorMessage = "May not contain <,>")]
当它被 mvc3 写出时,它看起来像这样:
<input ... data-val-regex-pattern="^[^\&lt;\&gt;]*$"
data-val-regex="May not contain &lt;,&gt;" .../>
编辑:
- 由于编码的原因,它也捕捉到了
<>,但也被以下词语绊倒: -
t喜欢蒂姆 -
g像山羊 - 可能是
;,但我没有测试过
这个正则表达式的目的是过滤掉 ,而不是禁用页面上的所有验证并在服务器端执行它。该字段接受多种 unicode 语言,并且只有 12 个字符长。
我的选择如下:
- 在一页上禁用 asp.net 输入完整性检查并仅在操作中进行检查
- 找到一个复杂的正则表达式来匹配 3+ 个 unicode 范围 +/- 破折号和数字 - .net + js compat。
- 编写一个没有客户端验证的自定义正则表达式验证器
- 使用
[Remote]验证器在服务器端进行验证,就像我们对其他字段所做的那样
我现在倾向于#3,但我真的很想找到一种方法来保持内置功能。有什么办法可以禁用此输出转义?
【问题讨论】:
-
你也可以使用远程验证来做到这一点
-
是的,当然。虽然对于正则表达式来说似乎有点过分,但它应该在可能的解决方案列表中。
标签: jquery asp.net-mvc-3 jquery-validate