在 ASP .Net MVC C# 中,过滤器可以在哪些级别应用?

csharpserver side programmingprogramming更新于 2025/9/30 16:22:17

在 ASP .Net MVC 应用程序中,过滤器可以在三个级别应用。

  • Action 方法级别
  • 控制器级别
  • 全局级别

Action 方法级别

在 Action 方法级别应用的过滤器仅适用于该 Action 方法。

using System.Web.Mvc;
namespace DemoMvcApplication.Controllers{
   public class HomeController : Controller{
      [Authorize] //Action 方法级别
      public string Index(){
         return "Index Invoked";
      }
   }
}

控制器级别

控制器级别过滤器应用于所有操作方法。以下过滤器适用于 HomeController 的所有操作方法,但不适用于其他控制器。

using System.Web.Mvc;
namespace DemoMvcApplication.Controllers{
   [Authorize] //控制器级别
   public class HomeController : Controller{
      public string Index1(){
         return "Index1 Invoked";
      }
      public string Index2(){
         return "Index2 Invoked";
      }
   }
}

全局级别

全局级别过滤器在 global.asax.cs 文件的 Application_Start 事件中使用默认的 FilterConfig.RegisterGlobalFilters() 方法提供。全局过滤器将应用于应用程序的所有控制器和操作方法。

public class MvcApplication : System.Web.HttpApplication{
   protected void Application_Start(){
      AreaRegistration.RegisterAllAreas();
      FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
      RouteConfig.RegisterRoutes(RouteTable.Routes);
      BundleConfig.RegisterBundles(BundleTable.Bundles);
   }
}
public class FilterConfig{
   public static void RegisterGlobalFilters(GlobalFilterCollection filters){
      filters.Add(new HandleErrorAttribute());
      filters.Add(new AuthorizeAttribute());
   }
}

相关文章