iFrame和Response.Redirect MVC Razor

时间:2015-08-17 09:07:57

标签: c# redirect iframe razor

我之前发现了一些遗留代码,报告了一个错误,我想了解它是如何工作的;如果你看一下这个例子:

<iframe id="MyIFrame" src="www.makeacallhere.com/myCall"></iframe>
<p>You are currently being logged out.</p>
@{ Response.Redirect("/Login");}

控制器中的后端,如下所示:

public ActionResult FooBar {    
    return View();
}

它不起作用,因为永远不会进行iFrame调用,但它提出了一个问题;执行重定向的剃刀代码在其他所有内容之前执行;因此停止iFrame调用,我无法在Razor上找到任何支持文档,但我可以找到有关控制器的负载,包括https://msdn.microsoft.com/en-us/magazine/dd695917.aspx

我知道由于引发了System.Threading.ThreadAbortException而导致Redirect终止后的代码;但这会杀死浏览器正在进行的任何iFrame调用吗?

1 个答案:

答案 0 :(得分:-1)

下面的代码与您的代码相同但有区别

public ActionResult FooBar {    
    return RedirectToAction("/login");
}

在上面的代码重定向发生在Actiont内,但在你的代码IIS编译FooBar视图中它将从视图生成HTML但在将生成的HTML发送到客户端浏览器之前将发生重定向并且不会来自FooBarView的HTML将返回到客户端浏览器,而不是从Login生成的HTML视图将返回到客户端浏览器。如果您想要浏览器调用iframe,则必须通过JavaScript重定向页面。

<iframe id="MyIFrame" src="www.makeacallhere.com/myCall"></iframe>
<p>You are currently being logged out.</p>
<script>
    window.location = "http://www.yoururl.com";
</script>