可以在代码中触发MVC的ValidateRequest吗?

时间:2012-10-15 06:55:54

标签: asp.net-mvc actionresult

  

可能重复:
  Handle validation failures myself in ASP.NET MVC

我有一个采用HTML输入的动作方法(可能)。

[ValidateInput(false)]
[HttpPost]
public ActionResult Cms(string pageContent)
{
   CmsData = pageContent;
   return Redirect("/home/cms");
}

所以我不希望可怕的“一个有潜在危险的请求......”错误来崩溃POST。所以我在上面设置ValidateInput = false

但是,我想在代码中执行相同的检查并对其做出反应(比如发布一条消息说不允许HTML),而不是崩溃。

我知道我可以运行某种代码黑名单检查,但我不愿意。我宁愿让MVC告诉我,但没有完全崩溃页面,让我处理错误信息。

容易吗?可能的?

1 个答案:

答案 0 :(得分:1)

我想问题是关于动态调用RequestValidator以了解该值是否不包含任何html。这不简单!原因是IsValidRequestString的{​​{1}}方法检查是受保护的内部虚拟,因此您不能仅在外部调用它,而是创建自定义{{3}你可能会实现这一点(你可能需要创建一个调用受保护方法的公共方法)。