Ami*_*eri 3 asp.net asp.net-mvc
我曾经认为,在所有控制器方法结束后,将调用以下方法:
protected override void EndExecute(IAsyncResult asyncResult)
Run Code Online (Sandbox Code Playgroud)
现在调用所有重写方法,然后调用控制器方法。您知道在所有方法之后调用哪个重写方法吗?
小智 5
您可以使用操作过滤器,每次执行任何方法时都会调用它。您可以通过匹配方法名称来过滤它。
public class 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");
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2441 次 |
| 最近记录: |