仅供参考我使用的是.NET 4.0/MVC 3.
在我的控制器中,以下是我的代码:
[HttpPost]
[ValidateInput(false)]
public ViewResult Edit(ContentTemplateView contentTemplateView, FormCollection collection)
Run Code Online (Sandbox Code Playgroud)
当我不输入HTML时,一切正常,所以我知道正在触发正确的控制器.另外,我在web.config文件中正确设置了以下内容:
<httpRuntime requestValidationMode="2.0"/>
Run Code Online (Sandbox Code Playgroud)
当我包含FormCollection(这个特定的控制器需要)时,我才会遇到这个问题.那我究竟做错了什么?
[我已经完成了以下问题的建议,只要没有FormCollection,它们就可以工作.他们都没有提供包含FormCollection的解决方案]
我在.NET 4.0中使用ASP.NET MVC 3.我有一个模型,其中一个属性要求允许HTML内容.我已将该AllowHtml属性放在我的model属性上,该属性允许在该属性上使用HTML.这本身就有效.
我也在我网站的其他部分使用Uploadify flash上传程序.由于flash和会话的问题,我使用的代码类似于swfupload示例中的代码,以允许我的文件上传访问会话数据.基本上我是Request.Form直接在Application_BeginRequest处理程序中访问集合.
我遇到的问题是,当提供HTML的表单被提出时,我得到一个处理程序中HttpRequestValidationException的代码Application_BeginRequest访问Request.Forms[key]集合.
就像我在开始时所说的,我已经尝试了这个AllowHtml属性.我也尝试使用该ValidateInput(false)属性在动作和控制器级别禁用验证,但我相信我在请求生命周期中对于那些应用程序来说太早了.无论如何都要访问Request.Form包含"潜在危险"数据的集合而不禁用整个站点的请求验证?