爱上MVC~ajax调用分部视图session超时页面跳转问题

回到目录

这个问题出现了很多年了,都没有解决,问题是这样的,有一个需要授权才可以访问的分部视图,在一个view中使用ajax的方法去调用它,然后更新页面的局部DIV,这时,如果你长时间不操作,session会超时,这是正常的,但在超时时,如果你再调用ajax方法,这时你的页面跳转将会在DIV局部完成,这是我们不希望看到的!

事实上,引起这个问题的原因是MVC内部跳转机制的问题,它只到在当前的action所渲染的view上进行跳转,如果我们希望在当前页面跳,需要将MVC方法改为JS方法,代码如下

   filterContext.Result = new RedirectToRouteResult("Default", new RouteValueDictionary {
                      { "Action",_failActionName },
                      { "Controller", _failControllerName},
                      { "returnUrl", returnUrl} });

修改成JS的方式

 string url = new UrlHelper(filterContext.RequestContext).Action(
                _failActionName,
                _failControllerName,
                new
                {
                    returnUrl = returnUrl
                });
  //防治ajax调用分部视图出现登陆超时,在局部跳转URL的问题
   filterContext.HttpContext.Response.Write("<script>location.href=‘" + url + "‘</script>");
   filterContext.HttpContext.Response.End();

这几行代码就可以解决几年困扰我的问题了,所以,对于一个问题的解决需要我们仔细去研究,去思考!

回到目录

时间: 2024-11-05 18:44:09

爱上MVC~ajax调用分部视图session超时页面跳转问题的相关文章

EF5+MVC4系列(11)在主视图中用Html.RenderPartial来调用分部视图(ViewDate传值);在主视图中用ajax调用action并在action中return PartialView返回分部视图(return view 和return PartialView 的区别)

一:主视图中调用子视图 在没有使用母版页的主视图中(也就是设置了layout为null的视图中),使用 Html.RenderPartial  可以调用分部视图(只调用视图,不调用action),并且使用 ViewData 来从主Action里面传值到主视图,或者是分布视图 最后生成的html如下   二:在主视图中用ajax调用子action并在子action中使用return PartialView返回分布视图(return view 和return PartialView 的区别) 这种情

MVC中的分部视图

背景: 项目的工期马上就要到了,由于后台封装的很好,我们只需要用心熟悉框架,接下来后台的工作就是简单的代码工作了.原本以为最困难的时期已经过去,可没想到前台才是最困难的. B/S的基础十分薄弱,加上BS的项目做得少,遇到困难是避免不了的.霞姐说要界面灵活,那种在html里加onclick的时代已经过去.今天就来说说界面灵活之一--分部视图和Razor语法. 分部视图: 在一定程度上,分部视图与用户控件十分类似.他们都可以提高内容或代码的可重用性,但不同之处是,分部视图不需要使用ViewState

ASP.NET MVC AJAX调用JsonResult方法并返回自定义错误信息

一.如何用AJAX调用JsonResult方法 比如FuckController中添加有个返回JsonResult类型的方法FuckJson(): public JsonResult FuckJson() { return new JsonResult() { Data = new List<string>() { "fuck", "shit" }, JsonRequestBehavior = JsonRequestBehavior.AllowGet }

如何应用ASP.NET MVC中的分部视图

概述: 在ASP.NET Web Form的开发经验中,对于User Control使用比较频繁,可以减少重复的代码,利于页面模块化,这个概念也被引入了ASP.NET MVC.即“分部视图”. 1.创建分部视图: 在解决方案管理器中,找到Views文件夹下的Shared文件夹,右键添加视图,选择创建为分部视图,如图: 2.修改分部视图: 1 <p>分部视图中的p元素</p> 3,在其他视图中引用分布视图: 1 @Html.Partial("~/Views/Shared/I

MVC中查看分部视图网页代码

首先打开谷歌Google Chrome浏览器,打开测试的网页,F12 或者Fn+F12 出现开发者工具 点这个新弹窗中的顶部右侧"Network "->All 可以看到网页所有内容了 记得按下F12后,重新F5刷新下页面,这个时候才开始监控 然后点能展示分部视图的按钮,右侧也可以监控到,这里右侧小窗顶部的Response可以展示分部视图的网页代码

登录超时页面跳转和ajax请求时的问题!

今天闲来无事听见后端两个coder探讨如何判断请求是否是ajax请求(通过请求头判断是否是xmlhttprequest 和ie下那个布啦布啦的东西 )了解详情后是为了解决判断登陆超时ajax请求到的是登陆页面的html. 然后我给出了一个设计方式方最然我是一个前端)如下: 1,页面跳转的控制器和form提交的控制继承 基类A 然后 A 有做登陆超时的跳转的处理方法. 2,所有的接口也就是他们说的ajax请求的控制器继承基类B  B里面含有登陆超时时返回状态的功能前端在ajax请求的时候可以做状态

ASP.NET MVC3调用分部视图

我们的网页通常会有好几个部分组成,一些公共的区域我们通常会做成PartialView(部分视图),但这些视图并不是完全固定的,所以还是需要 特定的Controller来控制.如果只是静态的html,虽然也可以做成PartialView,但意义不大.下面演示一下MVC3中如何调用 PartialView. 首先我们创建一个测试用的Controller: TestController public class TestController : Controller {     public Acti

spring mvc session超时,处理ajax请求

做web开发时,当session超时时,如果不是ajax请求,很简单就能实现跳到指定的页面.但是ajax请求就会有问题.session超时的时候,点击到ajax请求就会弹出一些页面源码文件. 首先建了个拦截器,来判断session超时.用户登录后会保存用户信息在一个session里,在session的监听里,session超时会销毁保存在session里的用户信息,而拦截器就通过session里是否有用户信息来判断session超时. 拦截器是spring-mvc的拦截器,在拦截器里判断是不是a

MVC |分部视图 PartialView()

介绍如何定义 其实它和普通视图没有多大区别,只是创建分部视图的时候视图里没有任何内容,你需要什么标签你自己加.第二就是分部视图不会执行_ViewStart.cshtml中的内容) 控制器 PartialViewDeomController控制器 [csharp] view plain copy using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.