如何在MVC 3中的Request.Form集合中访问未经validation的项目

我在.NET 4.0中使用ASP.NET MVC 3。 我有一个模型,其中一个属性要求允许HTML内容。 我在我的模型属性上放置了AllowHtml属性,该属性允许在该属性上使用HTML。 这本身就有效。

我也在我网站的其他部分使用Uploadify flash上​​传程序。 由于flash和会话的问题 ,我使用的代码类似于swfupload示例中的代码,以允许我的文件上传访问会话数据。 基本上我直接在Application_BeginRequest处理程序中访问Request.Form集合。

我遇到的问题是,当提供HTML的表单被提出时,当Application_BeginRequest处理程序中的代码访问Request.Forms[key]集合时,我得到一个HttpRequestValidationException

就像我在开始时说的那样,我尝试过AllowHtml属性。 我还尝试使用ValidateInput(false)属性在动作和控制器级别禁用validation,但我相信我在请求生命周期中对于那些要应用的人来说太早了。 无论如何都要访问包含“潜在危险”数据的Request.Form集合而不禁用整个站点的请求validation?

你问这样的事情: 在ASP MVC 3 RC和.NET 4中使用Request.Unvalidated()validation请求 ?

 Request.Unvalidated().Params[""] 

对于记录,另一种方法是创建一个未经validation的对象:

 var unvalidatedRequest = System.Web.Helpers.Validation.Unvalidated(Request); 

然后,您只需访问Unvalidated()对象,而不是反复Unvalidated()

Validation.Unvalidated方法具有各种重载。