如何使用Html.TextAreaForwithout编码呢? 我知道这是一个安全风险,但我有一个单独的类来消毒任何文本。
示例:
@ Html.TextAreaFor(model => model.PostBodyText,10,100,1)
我打算将它与TinyMCE一起使用。
此致 RAVEN
更新 我正在使用新的Razor View引擎。
答案 0 :(得分:8)
你需要自己动手:
<textarea cols="100" id="PostBodyText" name="PostBodyText" rows="10">
@MvcHtmlString.Create(Model.PostBodyText)
</textarea>
当然,在安全性方面,这可能非常危险,因为您的网站现在容易受到XSS攻击。所以问题是为什么当你可以简单地依靠HTML帮助程序为你完成这项工作时,有一个单独的类来清理所有文本?
答案 1 :(得分:1)
作为替代选项,您可能希望使用ValidateInput,如here所述。 MVC风格的一个例子是:
[ValidateInput(false)]
public ActionResult Method(){
return View()
}
[ValidateInput(false)]
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Method(){
// your stuff here
RedirectToAction("index"); // or something
}
我认为这更像MVC的方式。现在您的控制器告诉您该控制器方法存在安全问题。您的视图可以是使用html助手等的任何普通视图。请注意,这可以启用各种输入,而不是过滤。 虽然会与TinyMCE合作。
//修改
woops我看到你需要添加
<httpRuntime requestValidationMode="2.0"/>
到webconfig以及新版本的MVC。猜猜这可能不是一条路。
答案 2 :(得分:1)
在model属性上使用[AllowHtml]
。正如我在In ASP.NET MVC 3, how do I get at the model using Razor Syntax in a Create() View?中学到的那样。