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