首页 > 解决方案 > 无法在控制器上禁用验证

问题描述

在 mvc 4 中,我必须遵循以下代码段:

[HttpPost]
[ValidateInput(false)]
public async Task<ActionResult> EmailHandle()
{
    OtherClass.SomeProcess(Request.Form);
}

public static class OtherClass 
{
   public static void SomeProcess(NameValueCollection coll) 
   {
       var value = coll["someKey"];
   }
}

问题是,尽管ValidateInput(false)我仍然无法从收藏中获得价值。( var value = coll["someKey"];) 由于错误:

A potentially dangerous Request.Form value was detected from the client

为什么会发生?我不想全局禁用验证。

标签: c#asp.net-mvcvalidation

解决方案


发现问题。为了允许读取危险值,我们可以使用:

Request.Unvalidated().Form

Unvalidated()扩展方法在System.Web.Helpers.


推荐阅读