c# - 无法在控制器上禁用验证
问题描述
在 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
为什么会发生?我不想全局禁用验证。
解决方案
发现问题。为了允许读取危险值,我们可以使用:
Request.Unvalidated().Form
Unvalidated()
扩展方法在System.Web.Helpers
.
推荐阅读
- javascript - 循环遍历构造函数中的类键?
- ms-access - 可以在查询 SQL 语句中传递变量吗?
- character-encoding - 连接和 Python 中的编码不匹配
- r - 重叠的时期,通过 R 的 ID 对活动进行分组
- image - 如何用图像填充整个框架?
- python - 如何重构此递归策略表达式 Strategy 以参数化其长度?
- powershell - Powershell将进程的pid添加到FileVersionInfo
- php - How to insert href link in this button tag
- python - Python Regex: AttributeError: 'str' object has no attribute 'Match'
- javascript - 创建递归表单元素