1

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。
4

1 回答 1

3

根据HttpServerUtility.Execute Method的 MSDN 页面,此方法的preserveFrom参数具有以下定义的行为:

保留表格

类型:System.Boolean

true保留 QueryString 和 Form 集合;false清除 QueryString 和 Form 集合。

Form 集合将包括页面上控件的状态数据。因此,如果 Execute() 作为事件的一部分执行,这可能会导致无限循环。

于 2017-11-08T11:05:55.097 回答