我们有一个 Asp.net MVC 项目,它有超过 1000 个 ActionResult,我需要为它们全部添加一个 C# 函数来检查会话的值。那么你有什么提议来做这件事呢?下面这两行有一些我的 Controller 和 ActionResult 的例子:
public partial class CRMController : Controller
{
public ActionResult OrganizationCategory()
{
//I want add a C# function here
}
}
public partial class BaseInfoController : Controller
{
public ActionResult Lead()
{
//I Want Add a C# Function here
}
}
Run Code Online (Sandbox Code Playgroud)
您可以为此使用ActionFilters。
基本 ActionFilterAttribute 类具有以下可以覆盖的方法:
OnActionExecuting – 在执行控制器操作之前调用此方法。OnActionExecuted – 在执行控制器操作后调用此方法。OnResultExecuting – 在执行控制器操作结果之前调用此方法。OnResultExecuted – 在执行控制器操作结果后调用此方法。
这里是完整的代码示例!
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");
}
}
[LogActionFilter]
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
public ActionResult About()
{
return View();
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
184 次 |
| 最近记录: |