当使用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
我知道我可以做一些种类或变量标志来检查循环的返回,但我想知道:
- 这是正确的行为吗?
- 是这样,为什么?
- 清洁方法以避免循环。
- 捕获整个页面 html 的推荐替代方法。
根据 HttpServerUtility.Execute 方法的 MSDN 页,此方法的 preserveFrom
参数具有以下定义的行为:
保存形式
类型:系统布尔值
如果为 true 以保留查询字符串和 表单集合;false 以清除 QueryString 和 Form 集合。
窗体集合将包括页面上控件的状态数据。因此,如果 Execute() 作为事件的一部分执行,这可能会导致无限循环。