c# - Response.Redirect() 问题
问题描述
在我的整个程序中,我总是使用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# 中,如果我们去定义,我们会得到: 让我们看看 SECOND 的重载:
没有地方我们看到第二个值存在建议的默认值。(没有默认值)
转到 def 我们看到:
现在有两种方法(第二个是重载)
我们可以扩展第二个(没有第二个参数)。我们看到这个:
并且随着过载(具有第二个值),我们看到:
再一次,第二个参数没有指定的默认值。
一个简单的快速测试将确认:
response.Redirect("some url")
或者
response.Redirect("some url",True)
两者都产生相同的效果 - 代码存根被终止并退出。
如果希望代码存根用完并继续运行,则使用
Response.Redirect("some url", false)
是必须的。
推荐阅读
- python - 除非您声明一个新列表,否则为什么 python 列表中的反向不相等?
- image-processing - 如何修复 Pytorch 中的“TypeError: 'Tensor' object is not callable”错误?
- ios - IOS应用内购买验证或数据检索
- sql - 如何将 MySQL 中的两个 SQL 查询与不同的列组合在一起而不组合它们的结果行
- python-3.x - 我怎么能不允许字母,只允许在 python 3 的输入中输入数字?
- javascript - 提交时的错误请求
- angular - 行为主题下一个()不工作角度8
- javascript - 如何编写一个在 CSS 中单击时改变颜色的圆圈
- ruby-on-rails - Rspec rails-controller-testing gem 的分配不起作用
- swift - 如何在 xCode 中使用字符串制作计时器