首页 新闻 会员 周边 捐助

Session过期我用OnActionExecuting做登陆跳转 但是页面是嵌套在iframe上的

0
悬赏园豆:5 [已解决问题] 解决于 2016-01-19 19:01

Session过期我用OnActionExecuting做登陆跳转 但是页面是嵌套在iframe上的

public override void OnActionExecuting(ActionExecutingContext filterContext)
{
//判断管理员是否登录
if (IsAdminLogin(filterContext))
{
filterContext.Result = new JavaScriptResult { Script = "<script>parent.location.href='../../../AdminPager/Login/Login'</script>" };

}
}

直接在页面输出了字符串,这个怎么解决啊?我是准备执行javascript的

奇民的主页 奇民 | 初学一级 | 园豆:147
提问于:2015-12-11 18:51
< >
分享
最佳答案
0

 filterContext.Result = RedirectToRoute("Home", new { Controller = "Login", Action = "Index" });

直接这样做服务器端的重定向跳转,不要使用js在前端跳转

收获园豆:5
Sky.Grain | 菜鸟二级 |园豆:308 | 2015-12-11 21:42

我用的是iframe 这样也可以么?

奇民 | 园豆:147 (初学一级) | 2015-12-11 22:35

@奇民: 这个是在服务器端进行跳转,不是输出js到客户端,跟用不用iframe没有关系。

另外 JavaScriptResult  这个ActionResult,需要配合前端的js框架才能支持,并不是用 JavaScriptResult 返回的脚本就会直接被浏览器执行

Sky.Grain | 园豆:308 (菜鸟二级) | 2015-12-12 09:16

@Sky.Grain: 青问一下,是不是在JavaScriptresult的返回值中,前端药使用ajax来接受这个返回值才能执行呢

木木人啊哦 | 园豆:233 (菜鸟二级) | 2015-12-16 22:45

@木木人啊哦: mvc 项目创建的时候会有一个 jquery.unobtrusive-ajax.min.js 文件。需要用这个配合才能使用。

可以看看这个 http://www.cnblogs.com/icyJ/p/JavaScriptResult.html

其实实现方式就是 JavaScriptResult  特殊处理的Response 的类型,然后配合前端的js 做单独的识别处理。

 

如果坚持想手写JS 跳转,可以 在服务器端返回一个url地址。 自己写的ajax拿到这个地址以后在做location.href

Sky.Grain | 园豆:308 (菜鸟二级) | 2015-12-17 09:41
其他回答(1)
0
<script language="javascript"> 
if(top.location!==self.location){ 
WarningTxt1 = "content页面被iframe了!"; 
WarningTxt2 = "我们跳出iframe,直接访问content页面吧!"; 
alert(WarningTxt1); 
alert(WarningTxt2); 
top.location.href=self.location.href; 
} 
</script> 

在iframe页面加上这段代码,地址自己修改一下,这样登录页面就不会出现子啊iframe框架里面了

打酱油的米饭 | 园豆:36 (初学一级) | 2015-12-14 07:38
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册