在实例化控制器之前,是否运行MVC操作过滤器属性?我有一个控制器的属性,我想从ActionFilter检查。这可能吗?
答案 0 :(得分:4)
根据Professional ASP.NET MVC 1.0一书,ActionFilters在实例化控制器后运行。到OnActionExecuting时(ActionFilter调用的第一个方法),Controller上下文可用。
答案 1 :(得分:2)
在动作过滤器的OnActionExecuted和OnActionExecuting事件被触发之前,Controller将被实例化。您还可以通过传递给事件处理程序的“filterContext”参数访问Controller。
public class TestActionAttribute : FilterAttribute, IActionFilter
{
#region IActionFilter Members
public void OnActionExecuted(ActionExecutedContext filterContext)
{
var controller = filterContext.Controller;
}
public void OnActionExecuting(ActionExecutingContext filterContext)
{
var controller = filterContext.Controller;
}
#endregion
}
答案 2 :(得分:1)
抽象类System.Web.Mvc.ActionFilterAttribute(从这个类派生自己的ActionFilter)有4个OnXXX方法:
我认为在OnActionExecuting中你可以检查你的控制器:
YourController controller = filterContext.Controller as YourController
if(controller != null)
{
// check your controller
}