1

使用 ASP.NET MVC 4 RTW,如何将 MVC 控制器操作和参数记录到数据库?我想审核用户操作,但不想在每个控制器中复制一堆代码,或者更糟糕的是,在每个操作中复制代码。有什么我可以在全球范围内实施的吗?我了解 EF / 数据库方面的事情,所以这真的是关于 MVC。

4

1 回答 1

2

您应该查看自定义操作过滤器。好的 MSDN 文章在这里http://msdn.microsoft.com/en-us/library/dd381609(v=vs.100).aspx

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);
    }
}
于 2012-09-13T20:20:03.183 回答