在 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";
}
}
}
全局级别
全局级别过滤器在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());
}
}