0
使用ASP.NET MVC 4 RTW,如何將MVC控制器操作和參數記錄到數據庫中?我想審覈用戶操作,但並不是真的想在每個控制器內部重複一堆代碼,或者更糟糕的是,在每個操作內部重複一堆代碼。有什麼我可以實現全球? 我瞭解EF /數據庫方面的事情,所以這實際上是關於MVC。如何記錄控制器和操作細節?
使用ASP.NET MVC 4 RTW,如何將MVC控制器操作和參數記錄到數據庫中?我想審覈用戶操作,但並不是真的想在每個控制器內部重複一堆代碼,或者更糟糕的是,在每個操作內部重複一堆代碼。有什麼我可以實現全球? 我瞭解EF /數據庫方面的事情,所以這實際上是關於MVC。如何記錄控制器和操作細節?
你應該看看自定義操作過濾器。這裏http://msdn.microsoft.com/en-us/library/dd381609(v=vs.100).aspx
好MSDN文章filterContext.ActionDescriptor.ActionName會給你記錄的動作的名稱,也filterContext.ActionDescriptor.ControllerDescriptor.ControllerName可能會幫助和參數在filterContext.ActionParameters舉行
這些過濾器可以全局應用於配置Global.asax中的所有操作或FilterConfig via下的App_Start文件夾中。
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
filters.Add(new LoggingFilterAttribute());
}
示例代碼屬性
public class LoggingFilterAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
filterContext.HttpContext.Trace.Write("(Logging Filter)Action Executing: " +
filterContext.ActionDescriptor.ActionName);
base.OnActionExecuting(filterContext);
}
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
if (filterContext.Exception != null)
filterContext.HttpContext.Trace.Write("(Logging Filter)Exception thrown");
base.OnActionExecuted(filterContext);
}
}