2010-04-23 59 views
7

我想禁用請求驗證關於中的特定視圖ASP.NET MVC 2.0 RTM。所以我加了一些必要查看Page指令部分如下:ValidateRequest = False,但在行動中它仍然是真實的,並忽略它?

<%@ Page ValidateRequest="false" Language="C#" MasterPageFile="Path" Inherits="System.Web.Mvc.ViewPage<Path>" %> 

RequestValidation未被禁用!我還添加了RequestValidation屬性相關行動控制如下:

[System.Web.Mvc.ValidateInput(false)] 
public System.Web.Mvc.ActionResult Create(Model instance) 
{ 
    //Do here something 
} 

:'),但RequestValidation未被禁用呢!

在最後一次嘗試我設置RequestValidation爲false 的Web.config文件如下:

<pages validateRequest="false" /> 

RequestValidation仍然沒有關閉!

爲什麼?提前致謝)

+0

你怎麼確定ValidateRequest不關閉?另外,請提供您的.net框架版本,asp.net和mvc版本。 – 2010-04-23 13:19:38

+0

因爲當我提交一個表單,其中一個字段的html標籤我收到一個ValidationRequest異常。我使用ASP.NET 4.0和MVC 2.0 – Sadegh 2010-04-23 13:57:52

+0

感謝您的鏈接。但如果我執行提供這種方式,所有這個新功能將失去!有沒有辦法忽略特定的視圖/控制器的驗證? – Sadegh 2010-04-23 14:02:28

回答

11

如果您使用的是asp.net 4.0,驗證請求功能行爲已從版本2.0更改。檢查出breaking changes document here。如果是這樣的話,你可以通過這樣的web.config中設置的請求驗證行爲回到2.0解決問題:

<httpRuntime requestValidationMode="2.0" /> 
+2

這節省了我的屁股今天。謝謝:) – SirDemon 2010-08-08 09:42:03

+2

這也解決了我的問題。但我不明白爲什麼。突破性的改變是關於將驗證擴展到非aspx請求,但是我只是將它用於普通的aspx頁面。現在,在我看來,validateRequest僅僅在4.0中被破解。如果沒有,是否有任何適當的方法來在4.0中做到這一點,但基本上不會回到2.0?僅供參考,僅供參考,具體如下: – Nicolas78 2011-05-19 09:13:22

+1

僅供參考:「第一項更改是將httpRuntime元素的requestValidationMode屬性設置爲」2.0「。此設置使請求驗證在後續請求處理事件序列中發生。後來,因爲從ASP.NET 4開始,請求驗證在請求生命週期的早些時候比在以前的ASP.NET版本中進行。「從https://msdn.microsoft.com/en-us/library/hh882339.aspx – Gusman 2015-05-11 21:06:45

0

只需添加

[ValidateInput(假)]

在您的控制器功能 但不要忘記值編碼,以防止有害代碼

[ValidateInput(false)] 
    public string Browse(string test) 
    { 
     string message = HttpUtility.HtmlEncode("Value = " + test); 
     return message; 
    } 
相關問題