ASP.NET - 使用 server.execute 时无限循环
ASP.NET - Infinite loop when using server.execute
当使用 server.execute
捕获当前页面的 html 时,以下代码陷入无限循环。
调试时
Server.Execute
导致每次都触发按钮单击事件。但是为什么?
看来 preserveForm = true
正在维护表单中的点击事件,但我需要它来维护我的查询字符串。
Protected Sub btn_Click(sender As Object, e As EventArgs) Handles btn.Click
test()
End Sub
Protected Sub test()
Dim writer As TextWriter = New StringWriter()
Server.Execute("ThisPage", writer, True)
End Sub
我知道我可以做某种或可变标志来检查循环的 return 但我想知道:
- 这是正确的行为吗?
- 是这样,为什么?
- 清除方法以避免循环。
- 捕获整个页面的推荐替代方法html。
根据 HttpServerUtility.Execute Method 的 MSDN 页面,此方法的 preserveFrom
参数具有以下定义的行为:
preserveForm
Type: System.Boolean
true to preserve the QueryString and
Form collections; false to clear the QueryString and Form collections.
表单集合将包含页面上控件的状态数据。因此,如果 Execute() 作为事件的一部分执行,这可能会导致无限循环。
当使用 server.execute
捕获当前页面的 html 时,以下代码陷入无限循环。
调试时
Server.Execute
导致每次都触发按钮单击事件。但是为什么?
看来 preserveForm = true
正在维护表单中的点击事件,但我需要它来维护我的查询字符串。
Protected Sub btn_Click(sender As Object, e As EventArgs) Handles btn.Click
test()
End Sub
Protected Sub test()
Dim writer As TextWriter = New StringWriter()
Server.Execute("ThisPage", writer, True)
End Sub
我知道我可以做某种或可变标志来检查循环的 return 但我想知道:
- 这是正确的行为吗?
- 是这样,为什么?
- 清除方法以避免循环。
- 捕获整个页面的推荐替代方法html。
根据 HttpServerUtility.Execute Method 的 MSDN 页面,此方法的 preserveFrom
参数具有以下定义的行为:
preserveForm
Type: System.Boolean
true to preserve the QueryString and Form collections; false to clear the QueryString and Form collections.
表单集合将包含页面上控件的状态数据。因此,如果 Execute() 作为事件的一部分执行,这可能会导致无限循环。