zoukankan      html  css  js  c++  java
  • Asp.Net MVC3 简单入门第一季(三)详解Controller之Filter

    http://www.cnblogs.com/fly_dragon/archive/2011/06/15/2081063.html

    [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

  • 相关阅读:
    windows7触屏编程
    改变窗口大小,恢复以前的大小
    insert()
    index()
    help()
    id()
    extend()
    count()
    cmp()
    append()
  • 原文地址:https://www.cnblogs.com/sui84/p/6777076.html
Copyright © 2011-2022 走看看