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に保持されます。
これらのフィルターは、configGlobal.asaxまたはFilterConfigの下の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 に答える