Server.Transfer() Vs. Server.Execute()



im对调用页面(第一页)和调用页面(新页面)的请求不清楚哪一个更好或效果更好。。。

我注意到,在这两种情况下,浏览器中的URL都保持第一页的URL(不会刷新到新的页面URL),因为浏览器没有被要求这样做。

任何可观的评论。。。。

原始位置:Server.Transfer和Server.Execute 之间的差异

Server.Transfer和Server.Execute都是在经典的ASP3.0中引入的(在ASP.NET中仍然有效)

使用Server.Execute时,会将URL作为参数传递给它,控件会移动到此新页面。代码的执行发生在新页面上。一旦代码执行结束,控件就会返回到最初的页面,就在它被调用的位置之后。然而,在Server.Transfer的情况下,它的工作原理基本相同,不同之处在于执行停止在新页面本身(意味着控件不会返回到调用页面)。

在这两种情况下,浏览器中的URL都保持为第一页URL(不会刷新为新页面URL),因为浏览器没有被要求这样做。

我知道这是旧的,但当我在谷歌上搜索时,它成为了第一个或第二个热门。我做了一些测试,想公布结果。

我创建了一个2页的网站。第1页的页面加载包含代码。。

try {
    //Response.Redirect("~/WebForm2.aspx");
    //Server.Transfer("~/WebForm2.aspx");
    //Server.Execute("~/WebForm2.aspx");
    //Server.TransferRequest("~/WebForm2.aspx");
    string strTry = "Try";
} catch (Exception ) {
    string strCatch = "Catch";
} finally {
    string strFinally = "Finally";
}

它为每个人做的事情的顺序真的很有趣。。。

命令序列重定向调用,Catch(ThreadAbortException),Finally,Load Page 2Transfer Call,Load Page 2,Catch(ThreadAbortException),Finally执行调用,加载第2页,尝试(继续),最后TransferRequest调用,Try(continues),Finally,Load Page 2

因此,了解你希望事情按照什么顺序发生可能会有所帮助。

就我个人而言,我喜欢在下一页的代码开始之前完成当前代码的想法。因此,无论是Redirect还是TransferRequest,尽管使用后者,如果你真的想让它不执行try块的其余部分,你可能必须在调用下面添加一个"return"。

最新更新