我想拦截“<”正则表达式验证器在表单字段中的字符。我将分三个步骤描述问题:
第1步:当我尝试提交包含“<”字段的表单时我得到了“潜在的危险请求......” - 正如ASP.NET中预期的那样。
第2步:为了避免ASP.NET的RequestValidation,我使用“[ValidateInput(false)]”在控制器中修饰我的Update方法。
按预期工作 - 现在我可以发布“<”字符没有错误。
第3步:我将xVal与DataAnnotations一起使用。例如,[Required]或[StringLength(255)]按预期工作。
但是当我使用时: [RegularExpression (“^ [^&lt;&gt;] * $”,ErrorMessage =“不允许使用特殊字符。”)],我再次收到“潜在危险请求...”错误< / strong>,尽管有[ValidateInput(false)]指令。
发生了什么事?有没有更简单的正则表达式验证方法,但是[ValidateInput(false)]到位了吗?当然,我想在模型中使用验证码,而不是在控制器中。
答案 0 :(得分:0)
我正在使用xVal&amp; nhibernate.validator,我试图重现这种行为,但因为验证器绑定到客户端,我无法获得超过客户端验证的值。当我禁用javascript时,它进入服务器端验证,并被正则表达式验证器捕获。
我使用数据注释验证属性和模型绑定器尝试了同样的事情,它也使它过去了。
必然会有其他事情导致错误。对不起,我无法提供帮助!
答案 1 :(得分:0)
尝试使用this method的简单规则进行验证。这至少可以从等式中消除xVal。如果问题仍然存在,那么我建议它与之相关:
<
时指定的属性进行例外处理答案 2 :(得分:0)
如果它只是一个字段,你可以写一个例程来寻找一个字符'&lt;或者&gt;'并删除它。你可以通过使用子串来实现这一点。希望这有助于
答案 3 :(得分:0)
我想静态方法Escape()
可以为你解决这个问题。
Regex r = new Regex(Regex.Escape(expression));
答案 4 :(得分:0)
将此行放在web.config
中<httpRuntime requestValidationMode="2.0" />
这是ASPNET 4.0的变化
答案 5 :(得分:0)
不,这是MVC 1 + xVal中的一个问题。 在MVC 2中,验证工作为 假设(并且不需要xVal 再见) - Alex42
看起来机器人继续把这个推到顶端。你能否将答案标记为已接受,以便知道?