MVC4禁用一项操作的验证

增强现实

我正在从事MVC4项目,并且我有一个要禁用验证的操作,例如:

[HttpPost]
[ValidateAntiForgeryToken]
[ValidateInput(false)]
public ActionResult AddNewItems(AddNewItemsModel model, string postType)
{ ... }

即使设置了“ ValidateInput(false)”,应用程序仍坚持对数据进行验证,等等。我已逐步执行了代码,并确认已调用此操作,但似乎忽略了该属性。是否有一些简单的替代方法可以完成这项工作(尤其是不需要另一层模型等的方法)?

增强现实

经过大量研究,我得出的结论是,验证已深入集成到默认模型绑定程序中,并且MVC基本上忽略了ValidateInput属性。我会注意到在web.config中使用以下内容

<system.Web>
  ...
  <httpRuntime requestValidationMode="2.0"/>

有时会纠正这种情况,但有时不会。我注意到,与“ ValidateInput”属性结合使用的此设置仅被间歇性地使用,这使它无用了。最后,我提出了一个动作过滤器,定义如下:

public class ClearModelErrorsAttribute : ActionFilterAttribute
{
  // ---------------------------------------------------------------------------------------
  public override void OnActionExecuting(ActionExecutingContext filterContext)
  {
    ModelStateDictionary msd = filterContext.Controller.ViewData.ModelState;
    foreach (var item in msd.Values)
    {
      item.Errors.Clear();
    }
  }
}

您可以看到它正在用蛮力消除所有错误(由于无法关闭验证),这对于我的特定情况是有效的。显然,这不是最可靠的解决方案(也是黑客),但可以轻松地对其进行修改以适用于更特定的场景。

我的动作的新签名如下:

[HttpPost]
[ValidateAntiForgeryToken]
[ClearModelErrors]
public ActionResult AddNewItems(AddNewItemsModel model, string postType)
{ ... }

并且我已经从web.config中删除了上面提到的项目。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

是否可以在MVC 5控制器中的一项操作上禁用身份验证筛选器?

来自分类Dev

验证在MVC4项目中不起作用

来自分类Dev

验证在MVC4项目中不起作用

来自分类Dev

MVC4表单身份验证+ AJAX操作

来自分类Dev

对ASP.NET MVC4中的一个提交按钮禁用客户端验证

来自分类Dev

禁用链接中的最后一项

来自分类Dev

MVC4多种类型的验证

来自分类Dev

MVC4验证摘要未显示

来自分类Dev

MVC4验证在提交后发生

来自分类Dev

MVC4验证错误显示

来自分类Dev

复选框验证-至少要验证一项

来自分类Dev

复选框验证-至少要验证一项

来自分类Dev

Javascript暂停-禁用一项功能,直到另一项完成

来自分类Dev

禁用一项UITabbar项目的旋转

来自分类Dev

javafx如何禁用checkboxTreeItem中的一项?

来自分类Dev

如何禁用JComboBox上的第一项

来自分类Dev

在MVC4项目中一次加载捆绑包

来自分类Dev

验证从列表中选择至少一项的方法

来自分类Dev

验证:满足任何一项规则,而不是全部

来自分类Dev

验证从列表中选择至少一项的方法

来自分类Dev

列表验证中的 Asp.NET 唯一项

来自分类Dev

在一项操作中更改多个PostgreSQL函数的模式?

来自分类Dev

仅API一项操作中的CORS政策错误

来自分类Dev

更新并在MSSQL中选择一项操作

来自分类Dev

执行一项操作后如何重用Stream

来自分类Dev

localStorage 访问是否是一项繁重的操作

来自分类Dev

在 Scala 的 foreach 中执行不止一项操作?

来自分类Dev

操作 Array.map 中的前一项?

来自分类Dev

从另一项调用一项ServiceStack 4服务,并抛出文件上传的乐趣