在动作过滤器中检查ModelState

Ser*_*lov 4 asp.net-mvc-3

我可以ModelState.IsValidOnActionExecuting方法中检入我的自定义操作过滤器吗?

awr*_*ley 10

是.ModelState是ViewData的一部分.所以你可以使用它:

filterContext.Controller.ViewData.ModelState
Run Code Online (Sandbox Code Playgroud)

例如,如果您想在执行操作后注入一些代码,但只有在ModelState.IsValid == true您执行以下操作时:

public override void OnActionExecuted(ActionExecutedContext filterContext)
{
    if (!filterContext.Controller.ViewData.ModelState.IsValid) return;
    // do something
}
Run Code Online (Sandbox Code Playgroud)