• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

关于ASP.NETMVC中Response.Redirect和RedirectToAction的BUG(跳转后继续执行后面代码 ...

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
 

在传统的ASP.NET中,使用Response.Redirect("")可以直接对页面进行转向,并且结束当前进程,不再往下执行.

    但是在MVC中不知是微软有意而为之还是就是一个BUG(例如@Html.DropDownList 的Name BUG),当使用Response.Redirect进行页面转向的时候并不会中断当前页面执行,这很不符合预期,并会产生难以预期的后果,即使参数加上true也一样无效.

      public ActionResult RedirectError()
        {
            if (true)//比如这里是登陆验证通过了,要转到后台主页了
            {
                Response.Redirect("http://www.chengchenxu.com", true);
            }             
 
            int a = 7 - 7;
            int b = 7 / a; //制造一个运行时异常,访问此页面会直接产生异常,并且难以跳转.
            return View();
        }

 

 

    以上代码如果在一个Action中,访问时和预期不符,会继续执行而产生异常,并不会发生跳转,这不得不说是一个BUG.

    

    现在我们尝试用RedirectToAction()来试一下,结果还是一样

 

 

 

    解决方法如下,创建一个EmpeyResult然后返回就可以了,代码如下:

           if (true)//比如这里是登陆验证通过了,要转到后台主页了
            {
                Response.Redirect("http://www.chengchenxu.com", true);
                EmptyResult er = new EmptyResult();
                return View(er);
            }
 
            int a = 7 - 7;
            int b = 7 / a; //制造一个运行时异常,访问此页面会直接产生异常,并且难以跳转.
            return View();    

 

        这样的话就没有问题了,不知道是不是我的用法不对还是其他什么问题,按照常理来说执行完跳转动作之后就应该中断当前页面而去执行新的页面,MVC中这个地方让人摸不着头脑,好在有解决方法,并且比较简单.

 

示例代码下载:

ChengChenXu.com.RedirectTest.rar

 

本文为博主原创,转载请保留出处:
http://www.chengchenxu.com/Article/17/redirect

 
用这个可以直接跳出
 

在传统的ASP.NET中,使用Response.Redirect("")可以直接对页面进行转向,并且结束当前进程,不再往下执行.

    但是在MVC中不知是微软有意而为之还是就是一个BUG(例如@Html.DropDownList 的Name BUG),当使用Response.Redirect进行页面转向的时候并不会中断当前页面执行,这很不符合预期,并会产生难以预期的后果,即使参数加上true也一样无效.

      public ActionResult RedirectError()
        {
            if (true)//比如这里是登陆验证通过了,要转到后台主页了
            {
                Response.Redirect("http://www.chengchenxu.com", true);
            }             
 
            int a = 7 - 7;
            int b = 7 / a; //制造一个运行时异常,访问此页面会直接产生异常,并且难以跳转.
            return View();
        }

 

 

    以上代码如果在一个Action中,访问时和预期不符,会继续执行而产生异常,并不会发生跳转,这不得不说是一个BUG.

    

    现在我们尝试用RedirectToAction()来试一下,结果还是一样

 

 

 

    解决方法如下,创建一个EmpeyResult然后返回就可以了,代码如下:

           if (true)//比如这里是登陆验证通过了,要转到后台主页了
            {
                Response.Redirect("http://www.chengchenxu.com", true);
                EmptyResult er = new EmptyResult();
                return View(er);
            }
 
            int a = 7 - 7;
            int b = 7 / a; //制造一个运行时异常,访问此页面会直接产生异常,并且难以跳转.
            return View();    

 

        这样的话就没有问题了,不知道是不是我的用法不对还是其他什么问题,按照常理来说执行完跳转动作之后就应该中断当前页面而去执行新的页面,MVC中这个地方让人摸不着头脑,好在有解决方法,并且比较简单.

 

示例代码下载:

ChengChenXu.com.RedirectTest.rar

 

本文为博主原创,转载请保留出处:
http://www.chengchenxu.com/Article/17/redirect


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
ASP.Net中自定义Http处理及应用之HttpModule篇发布时间:2022-07-10
下一篇:
Asp.net面试题之一发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap