我编写了一个在IFrame中运行的Asp .Net MVC应用程序.当我的一个控制器方法返回RedirectToAction()时,我希望顶部浏览器URL重定向到该地址,而不仅仅是我的IFrame.我该怎么做呢?因为我在另一个站点内运行,我需要将绝对URL传递给浏览器,即’
http://parentsite.com/myapp/ {controller} / {action}’
我想这相当于将我的超链接的目标属性设置为’_top’,以便整个站点重定向(这将通过扩展HtmlHelper非常简单),但我如何为服务器端重定向执行此操作?
到目前为止,我的解决方案是覆盖OnResultExecuting,提取我打算重定向到的URL,然后重定向到Frame Breaker View,传递我最初打算重定向到的URL作为参数. Frame Breaker View简单地写出了一些javascript,它将顶级浏览器URL设置为我的原始URL.这种方法有一个比我想要的额外的HTTP请求,但至少没有违反任何MVC原则(我不认为!).思考?
谢谢
解决方法
使用Redirect()而不是RedirectToAction()并传入url.
编辑:
我认为你需要一些JavaScript来打破客户端的IFrame.重定向到URL只会影响当前帧.