我之前发现了一些遗留代码,报告了一个错误,我想了解它是如何工作的;如果你看一下这个例子:
<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调用吗?
答案 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>