在ASP.NET MVC中的控制器操作后调用方法
我过去认为,在所有控制器方法最终完成后,将调用以下方法:在ASP.NET MVC中的控制器操作后调用方法,asp.net,asp.net-mvc,Asp.net,Asp.net Mvc,我过去认为,在所有控制器方法最终完成后,将调用以下方法: protected override void EndExecute(IAsyncResult asyncResult) 现在调用所有重写方法,然后调用控制器方法。您知道在所有方法之后调用什么重写方法吗?您可以使用操作筛选器,每次执行任何方法时都会调用它。您可以通过匹配方法名称对其进行筛选 公共类LogActionFilter:ActionFilterAttribute { public override void OnA
protected override void EndExecute(IAsyncResult asyncResult)
现在调用所有重写方法,然后调用控制器方法。您知道在所有方法之后调用什么重写方法吗?您可以使用操作筛选器,每次执行任何方法时都会调用它。您可以通过匹配方法名称对其进行筛选 公共类LogActionFilter:ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
Log("OnActionExecuting", filterContext.RouteData);
}
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
Log("OnActionExecuted", filterContext.RouteData);
}
public override void OnResultExecuting(ResultExecutingContext filterContext)
{
Log("OnResultExecuting", filterContext.RouteData);
}
public override void OnResultExecuted(ResultExecutedContext filterContext)
{
Log("OnResultExecuted", filterContext.RouteData);
}
private void Log(string methodName, RouteData routeData)
{
var controllerName = routeData.Values["controller"];
var actionName = routeData.Values["action"];
var message = String.Format("{0} controller:{1} action:{2}", methodName, controllerName, actionName);
Debug.WriteLine(message, "Action Filter Log");
}
}
有关更多详细信息,请访问:也许操作筛选器可以执行您想执行的任何操作?您可以提供一个示例吗?您想做什么?你能说得更具体一点吗?我想在所有控制器方法的末尾向ViewBag添加一些内容。要添加的项目可能因每种方法而有所不同。例如什么?从何处获取要添加到viewbag的数据?