【问题标题】:ASP.NET MVC ValidateInput(false) stops working with xVal and [RegularExpression] DataAnnotationASP.NET MVC ValidateInput(false) 停止使用 xVal 和 [RegularExpression] DataAnnotation
【发布时间】:2009-06-24 12:38:22
【问题描述】:

我想通过正则表达式验证器截取表单字段中的“

第 1 步:当我尝试提交包含“

第 2 步:为了避免 ASP.NET 的 RequestValidation,我在控制器中用“[ValidateInput(false)]”装饰了我的 Update 方法。

它按预期工作 - 现在我可以毫无错误地发布“

第 3 步:我将 xVal 与 DataAnnotations 一起使用。例如,[Required] 或 [StringLength(255)] 按预期工作。

但是当我使用: [RegularExpression("^[^]*$", ErrorMessage = "Special characters are not allowed.")], 我再次收到“潜在危险请求...”错误,尽管有 [ValidateInput(false)] 指令。

发生了什么事?是否有更简单的正则表达式验证方法,但使用 [ValidateInput(false)]?当然,我希望我的验证代码在模型中,而不是在控制器中。

【问题讨论】:

  • 鉴于 SO Community bot 已将其推到顶部,您能否确认这是否仍然是一个问题?
  • 不,这是 MVC 1 + xVal 中的问题。在 MVC 2 中,验证按预期工作(不再需要 xVal)。

标签: asp.net-mvc validation data-annotations xval


【解决方案1】:

不,这是 MVC 1 + xVal 中的一个问题。 在 MVC 2 中,验证的工作方式为 应该(并且不需要 xVal 不再) – Alex42

看起来机器人仍在继续将这个推到顶部。您能否将答案标记为已接受以便它知道?

【讨论】:

    【解决方案2】:

    我正在使用 xVal 和 nhibernate.validator,我尝试重现此行为,但由于验证器与客户端绑定,我无法获得客户端验证后的值。当我禁用 javascript 时,它进入服务器端验证,并被正则表达式验证器捕获。

    我使用数据注释验证属性和模型绑定器尝试了同样的事情,它也成功了。

    一定有其他原因导致错误。抱歉,我无法提供更多帮助!

    【讨论】:

      【解决方案3】:

      尝试使用带有this method 的简单规则进行验证。这至少可以从方程中消除 xVal。如果问题仍然存在,那么我建议它与以下任何一个有关:

      • MVC默认Model Binder的实现
      • 或者您使用的版本中的 MVC 视图引擎存在问题,这会以某种方式允许您通过验证 < 指定的属性出现异常

      【讨论】:

        【解决方案4】:

        如果它只是一个字段,您可以编写一个例程来查找字符“”并将其删除。您可以通过使用子字符串来实现这一点。希望这会有所帮助

        • 使用 For 循环来确定要测试的文本长度(for (int i=1, i
        • 验证从 1 开始的每个字符(例如 ch = text.substring(i,1)
        • 将每个读取的字符添加到 tmp 字符串中,除了 ''

        【讨论】:

          【解决方案5】:

          我想静态方法Escape() 会为你解决这个问题。

            Regex r = new Regex(Regex.Escape(expression));
          

          【讨论】:

            【解决方案6】:

            将这一行放在 web.config 中

            <httpRuntime requestValidationMode="2.0" />
            

            这是 ASPNET 4.0 中的变化

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2011-03-31
              • 1970-01-01
              • 2023-03-09
              • 1970-01-01
              • 2014-10-27
              • 1970-01-01
              • 2015-05-02
              • 1970-01-01
              相关资源
              最近更新 更多