首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Response.Redirect()问题

Response.Redirect()问题
EN

Stack Overflow用户
提问于 2020-12-28 04:47:56
回答 1查看 207关注 0票数 1

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

但在某些情况下,我需要使用Response.AddHeader("REFRESH","3;URL=mypage.aspx")来延迟页面重定向。但现在我担心页面不会被终止。所以我决定使用Page.Unload事件。但是我不知道怎么用它。

谁能给我解释一下如何正确地结束一个页面的生命周期?

EN

回答 1

Stack Overflow用户

发布于 2020-12-29 09:45:41

这两种情况下的页面都会被终止。

第二个值的"default“(true - default)意味着代码将终止!

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

因此:

代码语言:javascript
复制
    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",那么该例程中的代码将继续运行,直到子页面退出(end sub),然后另一个页面将与其正常的事件周期一起运行。

因此,真/假实际上决定了你是否想要一个硬退出。

如果你还有几行代码需要或者想要在response.redirect之后运行呢?好吧,那么我们可以:

将response.Redirect移动到这些代码行之后,或者如上所述,使用"false“不终止当前sub中代码的执行。

那么,如果你包含了一个false?然后发生页面重定向,但直到代码存根中的子例程完成运行。

编辑:

在Response.Redirect(“WebForm2”)上似乎有一些令人困惑的地方;

在c#中,如果我们转到definition,我们会得到这样的结果:让我们看看第二个重载:

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

转到def,我们可以看到:

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

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

对于重载(具有第二个值),我们可以看到:

同样,第二个参数没有指定的默认值。

一个简单的快速测试就可以确认:

代码语言:javascript
复制
response.Redirect("some url")

代码语言:javascript
复制
response.Redirect("some url",True)

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

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

代码语言:javascript
复制
Response.Redirect("some url", false)

是必需的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65470303

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档