如何使用动作过滤器在asp.net mvc中集中进行模型状态验证?

麦肯·本

我在多个地方编写此代码,并始终重复此逻辑:

public ActionResult MyMethod(MyModel collection)
{
    if (!ModelState.IsValid)
    {
        return Json(false);//to read it from javascript, it's always equal
    }
    else
    {
        try
        {
            //logic here
            return Json(true);//or Json(false);
        }
        catch
        {
            return Json(false);//to read it from javascript, it's always equal
        }
    }
}

有没有使用操作筛选任何方式不被重复try-catch,请问如果模型是有效的,并return Json(false)作为ActionResult

土清

为了符合REST,您应该返回http错误请求400,以指示该请求格式错误(模型无效),而不是返回Json(false)

尝试从asp.net官方网站的Web API尝试以下属性

public class ValidateModelAttribute : ActionFilterAttribute
{
     public override void OnActionExecuting(HttpActionContext actionContext)
     {
        if (!actionContext.ModelState.IsValid)
        {
            actionContext.Response = actionContext.Request.CreateErrorResponse(
                HttpStatusCode.BadRequest, actionContext.ModelState);
        }
    }
}

asp.net mvc的版本可能是这样的:

public class ValidateModelAttribute : ActionFilterAttribute
{
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
              if (!filterContext.Controller.ViewData.ModelState.IsValid)
              {
                   filterContext.Result = new HttpStatusCodeResult(HttpStatusCode.BadRequest);  
              }
        }
}

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

动作过滤器中的ASP.NET Web API读取模型

来自分类Dev

如何在ASP.NET CORE中将动作过滤器与依赖注入一起使用?

来自分类Dev

ASP.NET MVC在操作过滤器中将视图模型转换为通用接口类型

来自分类Dev

如何在动作过滤器中获取当前模型

来自分类Dev

如何在asp.net中的操作过滤器中添加参数?

来自分类Dev

ASP.NET MVC,如何在模型中添加特定的过滤器?

来自分类Dev

在MVC动作过滤器中获取类似于webapi的动作参数

来自分类Dev

操作过滤器后如何更新范围模型?

来自分类Dev

使用MVC构建ASP.NET,尝试从下拉列表创建过滤器

来自分类Dev

ASP.NET MVC Linq查询多个过滤器

来自分类Dev

什么是ASP.NET MVC中的过滤器

来自分类Dev

在MVC 5中的动作过滤器中调用异步方法

来自分类Dev

在MVC5中自动调用动作过滤器

来自分类Dev

什么时候需要包括/排除MVC动作过滤器的基本调用?

来自分类Dev

在MVC5中自动调用动作过滤器

来自分类Dev

使用两种模型在.NET MVC中进行搜索

来自分类Dev

如何使用动作过滤器更改输入参数

来自分类Dev

将方法的参数带入自定义操作过滤器MVC3 ASP

来自分类Dev

如何使用视图模型在asp.net mvc 5中进行编辑?

来自分类Dev

如何使用视图模型在asp.net mvc 5中进行编辑?

来自分类Dev

验证用户对操作过滤器的权限还是对过滤器进行授权?

来自分类Dev

ASP.NET WebAPI-将对象从“自定义操作过滤器”传递到操作

来自分类Dev

ASP.NET Core MVC(以前的MVC 6)Razor错误未被异常过滤器捕获

来自分类Dev

ASP.NET MVC选择器和过滤器之间的区别?

来自分类Dev

“过滤器”是Angular,Javascript还是ASP.Net MVC中的保留字?

来自分类Dev

覆盖ASP.NET Core 1.0 MVC中的全局授权过滤器

来自分类Dev

ASP.NET MVC选择器和过滤器之间的区别?

来自分类Dev

Asp.net Web 表单中的 MVC 异常过滤器等效项

来自分类Dev

MVC中的自定义操作过滤器

Related 相关文章

  1. 1

    动作过滤器中的ASP.NET Web API读取模型

  2. 2

    如何在ASP.NET CORE中将动作过滤器与依赖注入一起使用?

  3. 3

    ASP.NET MVC在操作过滤器中将视图模型转换为通用接口类型

  4. 4

    如何在动作过滤器中获取当前模型

  5. 5

    如何在asp.net中的操作过滤器中添加参数?

  6. 6

    ASP.NET MVC,如何在模型中添加特定的过滤器?

  7. 7

    在MVC动作过滤器中获取类似于webapi的动作参数

  8. 8

    操作过滤器后如何更新范围模型?

  9. 9

    使用MVC构建ASP.NET,尝试从下拉列表创建过滤器

  10. 10

    ASP.NET MVC Linq查询多个过滤器

  11. 11

    什么是ASP.NET MVC中的过滤器

  12. 12

    在MVC 5中的动作过滤器中调用异步方法

  13. 13

    在MVC5中自动调用动作过滤器

  14. 14

    什么时候需要包括/排除MVC动作过滤器的基本调用?

  15. 15

    在MVC5中自动调用动作过滤器

  16. 16

    使用两种模型在.NET MVC中进行搜索

  17. 17

    如何使用动作过滤器更改输入参数

  18. 18

    将方法的参数带入自定义操作过滤器MVC3 ASP

  19. 19

    如何使用视图模型在asp.net mvc 5中进行编辑?

  20. 20

    如何使用视图模型在asp.net mvc 5中进行编辑?

  21. 21

    验证用户对操作过滤器的权限还是对过滤器进行授权?

  22. 22

    ASP.NET WebAPI-将对象从“自定义操作过滤器”传递到操作

  23. 23

    ASP.NET Core MVC(以前的MVC 6)Razor错误未被异常过滤器捕获

  24. 24

    ASP.NET MVC选择器和过滤器之间的区别?

  25. 25

    “过滤器”是Angular,Javascript还是ASP.Net MVC中的保留字?

  26. 26

    覆盖ASP.NET Core 1.0 MVC中的全局授权过滤器

  27. 27

    ASP.NET MVC选择器和过滤器之间的区别?

  28. 28

    Asp.net Web 表单中的 MVC 异常过滤器等效项

  29. 29

    MVC中的自定义操作过滤器

热门标签

归档