Asp.net mvc 在ASP.NET MVC、动作过滤器或控制器中,哪个先实例化?
MVC操作过滤器属性是否在控制器实例化之前运行?我有一个控制器的属性,我想从ActionFilter检查它。这可能吗?根据专业的ASP.NET MVC 1.0书籍,ActionFilters在控制器实例化后运行。到OnActionExecuting(ActionFilter调用的第一个方法)时,控制器上下文可用。在触发操作筛选器的OnActionExecuted和OnActionExecuting事件之前,控制器将被实例化。您还可以通过传递给事件处理程序的“filterContext”参数访问控制器Asp.net mvc 在ASP.NET MVC、动作过滤器或控制器中,哪个先实例化?,asp.net-mvc,Asp.net Mvc,MVC操作过滤器属性是否在控制器实例化之前运行?我有一个控制器的属性,我想从ActionFilter检查它。这可能吗?根据专业的ASP.NET MVC 1.0书籍,ActionFilters在控制器实例化后运行。到OnActionExecuting(ActionFilter调用的第一个方法)时,控制器上下文可用。在触发操作筛选器的OnActionExecuted和OnActionExecuting事件之前,控制器将被实例化。您还可以通过传递给事件处理程序的“filterContext”参数访问控
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
}
抽象类System.Web.Mvc.ActionFilterAttribute(从此类派生您自己的ActionFilter)有4个OnXXX方法:
- OnActionExecuting
- 已执行的操作
- OnResultExecuting
- OnResultExecuted
YourController controller = filterContext.Controller as YourController
if(controller != null)
{
// check your controller
}