2012-09-13 20 views
0

使用ASP.NET MVC 4 RTW,如何將MVC控制器操作和參數記錄到數據庫中?我想審覈用戶操作,但並不是真的想在每個控制器內部重複一堆代碼,或者更糟糕的是,在每個操作內部重複一堆代碼。有什麼我可以實現全球? 我瞭解EF /數據庫方面的事情,所以這實際上是關於MVC。如何記錄控制器和操作細節?

回答

1

你應該看看自定義操作過濾器。這裏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); 
    } 
}