2015-04-23 66 views
2

因此,我知道爲什麼會發生這種情況,但只是不確定解決問題的最佳方法。 我正在使用的應用程序有一個ViewModel並綁定/映射模型的屬性。從客戶端檢測到潛在危險的Request.QueryString值

然後將此VM綁定到視圖並使用@ Html.TextBox()助手。

這是一個例子:從數據庫中的實際文本值是:

"Université de Montréal" 

在DOM中的HTML渲染輸出是:

<input class="validate" id="EmployerName" name="EmployerName" type="text" value="Universit&amp;#233; de Montr&amp;#233;al" /> 

現在,一旦該頁面已被加載,它通過序列化表單併發送一個AJAX GET調用。

在這一點上,它確實擊中控制器(因爲我已經申請到控制器動作[ValidateRequest(假)]屬性,但後來我得到的錯誤:

A potentially dangerous Request.QueryString value was detected from the client (employername="Universit&#233; de Montr&#233..."). 

在這一點上,我我堅持要做些什麼來解決問題,並讓請求過程正常。 我知道通過在web.config中添加修復它,我不想改變它的網站範圍。

任何想法最好要做的事情,以允許這個請求正常處理?

控制器動作:

[ValidateInput(false)] 
[OutputCache(NoStore = true, Duration = 0)] 
public ActionResult GetMoreData(Criteria crit) 
{ 
... 
} 
+0

這是不是重複http://stackoverflow.com/questions/81991/a-potentially-dangerous-request-form-value-was-detected-from-the-client?rq=1? –

+0

nope - 不是重複 –

+0

介意說爲什麼不呢? –

回答

0

所以,我設法解決了這個問題。

當使用MVC TextBoxFor時,它自動編碼字符串(這很好)。

將[ValidateInput(false)]屬性添加到控制器操作可以調用操作方法。然後我只是做了一個HtmlDecode ON SAVE。在加載時,我只需HtmlEncode字符串。

如果你有很多屬性顯示給用戶,但它的工作原理不是最好的解決方案。

相關問題