Ian*_*ink 6 c# asp.net asp.net-mvc attributes asp.net-mvc-4
我有一个控制器有几个动作.如果服务上的IsCat字段为false,则应重定向Action :
所以这样的事情:
    public ActionResult MyCatAction()
    {
        if (MyService.IsCat==false)
            return RedirectToAnotherControllerAction();
     ...
Run Code Online (Sandbox Code Playgroud)
这可以在属性中完成并应用于整个Controller的一组操作吗?
在这种情况下,动作过滤器是这样的:
动作过滤器,用于包装动作方法的执行.此过滤器可以执行其他处理,例如向操作方法提供额外数据,检查返回值或取消操作方法的执行.
这是一个很好的MSDN如何:如何:创建自定义操作筛选器
在你的情况下,你会有这样的事情:
public class RedirectFilterAttribute : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        if (MyService.IsCat==false)
            return RedirectToAnotherControllerAction();
    }
}
Run Code Online (Sandbox Code Playgroud)
然后,您将在控制器级别应用此过滤器(适用于所有控制器操作)
[RedirectFilterAttribute]
public class MyController : Controller
{
   // Will apply the filter to all actions inside this controller.
    public ActionResult MyCatAction()
    {
    }    
}
Run Code Online (Sandbox Code Playgroud)
或按行动:
[RedirectFilterAttribute]
public ActionResult MyCatAction()
{
     // Action logic
     ...
}    
Run Code Online (Sandbox Code Playgroud)
        |   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           3501 次  |  
        
|   最近记录:  |