Asp.Net MVC3 简单入门第一季(三)详解Controller之Filter
http://www.cnblogs.com/fly_dragon/archive/2011/06/15/2081063.html
Global.asax
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = true)] public sealed class CheckLogin : ActionFilterAttribute { public override void OnActionExecuting(ActionExecutingContext filterContext) { if (filterContext.HttpContext.Session != null) { if (filterContext.HttpContext.Session.IsNewSession) { //LogFormatHelper.LogRequestParams("filterContext.HttpContext.Session.IsNewSession"); filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary(new { Controller = "Account", Action = "Login" })); } } } }
Global.asax
protectedvoid Application_Start()
{
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
}
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = true)] public sealed class LogAction : ActionFilterAttribute { private string actionName = string.Empty; private Stopwatch sw = null; public override void OnActionExecuting(ActionExecutingContext filterContext) { sw = Stopwatch.StartNew(); actionName = filterContext.ActionDescriptor.ActionName; string function = actionName + " Start..."; if (filterContext.ActionParameters.Count == 0) { LogFormatHelper.LogRequestParams(function); } else { object[] objs = new object[filterContext.ActionParameters.Count]; int i = 0; foreach( var dic in filterContext.ActionParameters){ objs[i++] = dic.Value; } LogFormatHelper.LogRequestParams(function, objs); } base.OnActionExecuting(filterContext); } public override void OnResultExecuted(ResultExecutedContext filterContext) { base.OnResultExecuted(filterContext); string function = actionName + " End"; StringBuilder sb = new StringBuilder(); foreach (var key in filterContext.RouteData.Values.Keys) { sb.AppendFormat("{0} = {1}", key, filterContext.RouteData.Values[key]).AppendLine(); } string str = filterContext.RouteData.Values.ToString(); LogFormatHelper.LogRequestParams(function, sw.Elapsed , sb.ToString() ); if (filterContext.Exception != null) { LogFormatHelper.LogServiceError(filterContext.Exception, actionName); } } }
MVC系统过滤器、自定义过滤器
http://www.cnblogs.com/kissdodog/archive/2013/05/21/3090513.html