繁体   English   中英

Response.Redirect() 问题

[英]Response.Redirect() problems

在我的整个程序中,我总是使用Response.Redirect()方法。 我一直认为,每当调用此方法时,当前页面都会终止并启动重定向页面。 但是后来,我意识到 Response.Redirect() 有第二个参数: bool endResponse 所以我得出的结论是页面没有被终止......(如果我错了,请纠正我)

但在某些时候,我需要使用Response.AddHeader("REFRESH","3;URL=mypage.aspx")来延迟页面重定向。 但现在恐怕页面不会被终止。 所以我决定使用Page.Unload事件。 但我不知道如何使用它。

任何人都可以向我解释如何正确结束页面的生命周期?

在这两种情况下,页面实际上都被终止了。

第二个值的“默认”(真 - 默认)意味着代码将终止!

如果您设置 value = false,则会发生重定向,但您拥有的任何代码都将继续运行。

因此:

    Response.Redirect("WebForm2.aspx")
    Debug.Print("this code will NOT run")

    or

    Response.Redirect("WebForm2.aspx", True)    ' true is default
    Debug.Print("this code will NOT run")

    but:

    Response.Redirect("WebForm2.aspx", False) 
    Debug.Print("this code WILL RUN - so will rest of code")

那么,在您开始或发现时将值设置为 true 吗? 它不会改变一件事,因为那是/首先是默认设置。

因此,如果您使用“false”,则该例程中的代码将继续运行,直到子退出(结束子),然后另一个页面将与其正常事件循环一起运行。

所以,真/假真的只是决定你是否想要一个硬退出。

如果您需要或想要在 response.redirect 之后运行更多代码行? 那么,可以:

在这些代码行之后移动 response.Redirect,或者如前所述,使用“false”来不终止当前子代码的执行。

所以,如果你包括一个假的? 然后页面重定向发生,但直到该代码存根中的子例程完成运行。

编辑:

Response.Redirect("WebForm2"); 似乎有些混乱。

在 c# 中,如果我们对 go 进行定义,我们得到: 让我们看一下 SECOND 过载:

在此处输入图像描述

没有地方我们看到第二个值存在建议的默认值。 (没有默认值)

转到 def 我们看到:

现在有两种方法(第二个是重载)

在此处输入图像描述

我们可以扩展第二个(没有第二个参数)。 我们看到这个:

在此处输入图像描述

并且随着重载(具有第二个值),我们看到:

在此处输入图像描述

再一次,第二个参数没有指定的默认值。

一个简单的快速测试将确认:

response.Redirect("some url")

或者

response.Redirect("some url",True)

两者都产生相同的效果 - 代码存根被终止并退出。

如果希望代码存根用完并继续运行,则使用

Response.Redirect("some url", false)

是必须的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM