zoukankan      html  css  js  c++  java
  • Action过滤器使用实例(一)

    1.实例一

        /// <summary>
        ///  需要用户登陆的 action,执行提前验证
        /// </summary>
        public class LoginFilterAttribute : FilterAttribute, IActionFilter
        {
            void IActionFilter.OnActionExecuted(ActionExecutedContext filterContext)
            {
            }
            /// <summary>
            /// 执行action 前验证 用户是否登陆,如果没有登陆返回字符串体质
            /// </summary>
            /// <param name="filterContext"></param>
            void IActionFilter.OnActionExecuting(ActionExecutingContext filterContext)
            {
                // throw new NotImplementedException();
                //1.判断
                if (A_UserHelper.IsLogin() == false)
                {
                    ContentResult result = new ContentResult();
                    result.Content = "亲,还没有登陆,请先登录";
                    filterContext.Result = result;
                }
            }
    
        }

    2.实例二

        public class LoginGoAttribute : FilterAttribute, IActionFilter
        {
            void IActionFilter.OnActionExecuted(ActionExecutedContext filterContext)
            {
                //throw new NotImplementedException();
            }
            /// <summary>
            /// 执行action 之前 验证用户是否登陆,如果没有登陆返回登陆页面
            /// </summary>
            /// <param name="filterContext"></param>
            void IActionFilter.OnActionExecuting(ActionExecutingContext filterContext)
            {
                //throw new NotImplementedException();
                if (A_UserHelper.IsLogin() == false)
                {
                    //不跳转在当前地址返回登陆页------
                    //RouteData route = filterContext.RouteData;
                    //route.Values["controller"] = "user";
                    //route.Values["action"] = "login";
                    //IController IController = new UserController();
                    //HttpContextBase context = filterContext.HttpContext;
                    //IController.Execute(new RequestContext(context, route));
                    //filterContext.Result = new ContentResult();
    
    
    
    
                    //重定向到登陆页--------不推荐使用,因为当前action还是会执行
                    //HttpContextBase context = filterContext.HttpContext;
                    //context.Response.Redirect(SiteUrl.GetLogin(),true);
                    //context.Response.End();
                    //filterContext.ActionDescriptor = null;
    
    
                    //临时重定向到登陆页
                    HttpRequestBase req = filterContext.HttpContext.Request;
                    string url = SiteUrl.GetLogin() + "?redirecturl=" + req.Url.AbsoluteUri;
                    RedirectResult result = new RedirectResult(url, false);
                    filterContext.Result = result;
    
    
    
                    //此方法 失败
                    //HttpContextBase context = filterContext.HttpContext;
                    //UserController userC = new UserController();
                    //userC.ControllerContext = new ControllerContext();
                    //userC.ControllerContext.RouteData.DataTokens["controller"] = "user";
                    //userC.ControllerContext.RouteData.Values["area"] = "";
                    //ContentResult content = new ContentResult();
                    //content.Content = ViewHelper.RenderViewToString(userC, "login", null); ;
                    //filterContext.Result = content;
    
                }
            }
        }

    更多:

    MVC4过滤器:http://www.cnblogs.com/tianma3798/p/4666544.html

  • 相关阅读:
    mongodb 报错问题
    Android中Is library配置的作用
    Ubuntu 12.04 中安装和配置 Java JDK
    (转)Android开发把项目打包成apk
    (转)Android--使用Canvas绘图
    Android_Gallery(画廊)
    android组件
    Android中px dpi dip density densityDpi 的相关说明
    (转)Android中px与dip,sp与dip等的转换工具类
    (转)谈谈Android中的Rect类——奇葩的思维
  • 原文地址:https://www.cnblogs.com/tianma3798/p/4666981.html
Copyright © 2011-2022 走看看