2016-01-01 86 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