2016-01-01 85 views
0

大家好我正在實施一個程序來下載電子郵件並將其保存到數據庫。我將內容綁定到webgrid和行單擊我打開一個視圖來顯示郵件內容。每件事情都可以正常工作,但是當我使用html標籤的內容時,我收到的網頁錯誤可能會有人幫助我。這是我的控制器MVC5網頁錯誤(500)

public JsonResult GetMessageDetails(string bodyContent) 
    { 
     ViewBag.bodyContent = bodyContent; 
     return Json(bodyContent, JsonRequestBehavior.AllowGet); 
    } 

enter image description here

回答

3

這是MVC中的安全功能,以防止攻擊Cross site scripting裏面的代碼。

跨站腳本如何工作?

試想一下,你正在閱讀一些HTML輸入,在你的頁面一樣

@Html.Raw(Model.SomePropertyWhichHasHtmlContent) 

使其不進行編碼現在,而不是發佈一個答案,如果我貼這個

"<script>alert('Bazinga!'); window.location.href='http://www.mywebsite.com';</script>"

當您嘗試使用Html.Raw()方法在頁面中呈現此html內容時,用戶將在看到提醒後重定向到www.mywebsite.com。

現在就在你的情況下,如果你信任這個方法的輸入,知道如何在頁面上顯示時總是對內容進行編碼,並且想要覆蓋這個行爲,你可以用ValidateInput屬性來修飾你的動作方法值false

[ValidateInput(false)] 
public JsonResult GetMessageDetails(string bodyContent) 
{ 
    ViewBag.bodyContent = bodyContent; 
    return Json(bodyContent, JsonRequestBehavior.AllowGet); 
} 
+0

Thanks'Shyju''[ValidateInput(false)]'這個訣竅 – demouser