在ASP .Net MVC C#中可以應用過濾器的級別有哪些?


在 ASP .Net MVC 應用程式中,過濾器可以在三個級別應用。

  • 操作方法級別
  • 控制器級別
  • 全域性級別

操作方法級別

應用在操作方法級別的過濾器只會對特定的操作方法生效。

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

控制器級別

控制器級別的過濾器應用於所有操作方法。以下過濾器適用於 HomeController 的所有操作方法,但不適用於其他控制器。

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

全域性級別

全域性級別的過濾器透過使用預設 FilterConfig.RegisterGlobalFilters() 方法在 global.asax.cs 檔案的 Application_Start 事件中提供。全域性過濾器將應用於應用程式的所有控制器和操作方法。

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());
   }
}

更新於: 2020 年 9 月 24 日

404 次瀏覽

開啟你的 職業

透過完成課程獲得認證

立即開始
廣告
© . All rights reserved.