在.NET MVC C#中可以在哪些级别应用筛选器?
在ASP.NetMVC应用程序中,可以在三个级别上应用过滤器。
行动方法水平
控制器级别
全球水平
行动方法水平
在“操作方法”级别应用的过滤器仅特别适用于该操作方法。
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()); } }