Asp.net-Mvc

ASP.NET MVC ValidateInput(false) 停止使用 xVal 和 [RegularExpression] DataAnnotation

  • June 24, 2009

我想通過正則表達式驗證器攔截表單欄位中的“<”字元。我將分三個步驟描述問題:

第 1 步:當我嘗試送出包含“<”字元的欄位的表單時,我收到“潛在危險請求…” - 正如 ASP.NET 中所預期的那樣。

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

它按預期工作 - 現在我可以發布“<”字元而不會出錯。

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

但是當我使用:[RegularExpression ("^[^<>]*$", ErrorMessage = “Special characters are not allowed.”)] 時,我再次收到“Potentially dangerousos request…”錯誤,儘管 [ValidateInput (false)] 指令。

發生了什麼?是否有更簡單的正則表達式驗證方法,但使用 [ValidateInput(false)]?當然,我希望我的驗證程式碼在模型中,而不是在控制器中。

不,這是 MVC 1 + xVal 中的一個問題。在 MVC 2 中,驗證按預期工作(不再需要 xVal) – Alex42

看起來機器人繼續將這個推到頂部。您能否將答案標記為已接受以便它知道?

引用自:https://stackoverflow.com/questions/1038102