在MVC 3中使用PRG模式的AllowHtml

时间:2011-08-03 17:06:41

标签: asp.net asp.net-mvc-3

我无法获取AllowHtml属性(在DirtySearch类中使用)来处理以下操作:

    public ActionResult NewEntry(string searchIndex, string searchString)
    {
        var model = new SearchResultsModel(loserID, searchIndex, searchString);
        return View(model);
    }

    [HttpPost]
    public ActionResult GetSearchResults(DirtySearch dirtySearch)
    {
        return RedirectToAction("NewEntry", new { searchIndex = dirtySearch.SearchIndex, searchString = dirtySearch.SearchString });
    }

我收到从客户端检测到潜在危险的Request.Path值(%)错误。

我已将<httpRuntime requestValidationMode="2.0" />添加到我的Web.config中,并将ModelMetadataProviders.Current = new DataAnnotationsModelMetadataProvider();放入Application_Start方法。

我觉得我在这里忽略了一些明显的东西。

2 个答案:

答案 0 :(得分:0)

如果您在httpRuntime的{​​{1}}节点上添加了其他属性,则可以取消此错误:

web.config

但您最好阅读文档以了解这些设置将关闭哪些安全功能。

答案 1 :(得分:0)

不要压制此错误。由于PATH仍然存在问题,您似乎遇到了安全问题。路径是什么(检查小提琴,以便您可以看到所有请求详细信息) 取自: http://blogs.msdn.com/b/marcinon/archive/2010/11/09/mvc3-granular-request-validation-update.aspx

“MVC 3中的粒度请求验证仅支持关闭Form(有时是QueryString)的验证。路径仍将被验证,以及剩余的Request集合。

您的模块应该通过System.Web.Helpers.Validation.Unvalidated()方法(在System.Web.WebPages.dll中可用)访问Request值,以绕过默认请求验证(这是机制使用的内容)允许AllowHtml工作)。“