MVC 3 TempData深入研究(跳转Action中没有取TempData的思考)

写这篇东西源于一个问题:

问题描述

在一个Action中加入TempData["message"] = this.dialog.GetValue("NoLogin"),转到另一个Action时没有取到TempData["message"] 值。

      [RolesFilterAttribute]
       public ActionResult ModifyUser()
        {
            AccountInfo userInfo = ViewData["FilterUserInfo"] as AccountInfo;

            if (userInfo != null)
            {  ............................


在需要的方法上贴触发器:

     /// <summary>
        /// 用户查询页面(Get)
        /// </summary>
        /// <returns></returns>
        [RolesFilterAttribute]
        [HttpGet]
        public ActionResult SearchUser()
        {
            AccountInfo accountInfo = ViewData["FilterUserInfo"] as AccountInfo;
            Result<SearchResult<List<AccountInfo>>, string> result;

            if (accountInfo == null)
            {

                TempData["message"] = this.dialog.GetValue("NoLogin");

                return RedirectToAction("Error", "Common");
            }

       
............................其他代码省略              
            }

        }

说明:RolesFilterAttribute 实现接口IAuthorizationFilter ;下面是简单实现代码:

    #region IAuthorizationFilter 成员

        void IAuthorizationFilter.OnAuthorization(AuthorizationContext filterContext)
        {
            if (filterContext == null)
            {
                throw new ArgumentNullException("filterContext");
            }
            if (!this.AuthorizeCore(filterContext))
            {
                filterContext.Result = new ViewResult() { ViewName = "Error"};
            }
        }

        private bool AuthorizeCore(AuthorizationContext filterContext)
        {
            AccountInfo account = userSystem.CheckLogin();

            if (account != null)
            {
                if ((account.Power & Role) > 0)
                {
                    return true;
                }
                
                return false;
            }
           return false;
        }
        #endregion


出现问题:TempData["message"] = this.dialog.GetValue("NoLogin"); 没有提示信息没有到达错误页面。这是为什么呢?

我们知道:TempData只存放一次数据,到第三个Action时,第一个Action存放的数据就失效了(TempData的特性就是可以在两个Action之间传递数据,它会保存一份数据到下一个Action,并随着再下一个Action的到来而失效)。现在只是从SeachUser -->E

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值