【问题标题】:Response.write and ASP.NET controlsResponse.write 和 ASP.NET 控件
【发布时间】:2014-07-05 18:03:08
【问题描述】:

请看下面的代码:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
        Response.Write("<table><tr><td>some text</td></tr></table>")
        Response.Flush()
        Threading.Thread.Sleep(3000)
        Response.Write("<table><tr><td>some text</td></tr></table>")
        Response.Flush()
        Threading.Thread.Sleep(3000)
        Response.Write("<table><tr><td>some text</td></tr></table>")
        Response.Flush()
        Threading.Thread.Sleep(3000)
        Response.Write("<table><tr><td>some text</td></tr></table>")
        Response.Flush()
        Threading.Thread.Sleep(3000)
    End Sub

代码按我的预期工作,即生成一个 HTML 表格并将其写入屏幕,然后在三秒后生成另一个表格并将其添加到屏幕等。

我有一个网页动态添加 x 个表格 (http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.table%28v=vs.110%29.aspx) 到网页。但是, Response.Flush 似乎不起作用。我创建了下面的简单代码来解释这个问题:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
        Dim Table1 As New Table
        Dim r As New TableRow()
        Dim c As New TableCell()
        c.Text = "Test 1"
        r.Cells.Add(c)
        Table1.Rows.Add(r)
        Response.Flush()
        Threading.Thread.Sleep(3000)

        Dim Table2 As New Table
        Dim r2 As New TableRow()
        Dim c2 As New TableCell()
        c.Text = "Test 2"
        r.Cells.Add(c)
        Table1.Rows.Add(r)
    End Sub

是否可以将 table1 刷新到客户端,然后等待几秒钟然后刷新 table2 还是必须将字符串写入 response.write?

【问题讨论】:

  • 您没有将 Table1 添加到表单中。它需要是表单控件集合的一部分。尝试将占位符添加到表单,然后将表格添加到占位符。
  • @Craig Moore,它已添加到实时应用程序中的 PlaceHolder 控件中。
  • 您的问题是关于理解 response.flush 还是解决您的问题?
  • @Dalorzo,两者都有。是否可以将 response.flush 与包含 Web 控件的页面一起使用?
  • 我能找到的所有示例都是 HelloWorld 类型的示例,即将文本项刷新到屏幕上。

标签: asp.net vb.net


【解决方案1】:

要以这种方式使用Response.Flush,您需要使用Response.Write自己输出所有HTML代码。

您不能使用 Web 控件,因为它们在页面完成之前不会呈现。 Web 控件仅作为对象存在,直到整个页面呈现为 HTML 代码然后发送到浏览器的Page_Render 阶段。

【讨论】:

  • 感谢您的 +1。是否有替代 response.flush 的方法,它允许使用 Web 控件?也许是构建网页的异步方法。
  • @w0051977:是的,您可以发送没有内容的页面并使用 AJAX 获取更多内容。您可以使用纯 Javascript 并从处理程序获取 HTML,或使用 PageMethod 从 Javascript 调用服务器代码,或使用更新面板的 AJAX 支持。
  • 你能在我标记答案之前发布一个链接吗?也许这个:msdn.microsoft.com/en-us/library/vstudio/…。我想确保我走在正确的轨道上。
  • @w0051977:是的,这是一种选择。这是一个路线图:msdn.microsoft.com/library/bb398822.aspx
  • 我认为这在网页第一次加载以及回发时都有效?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-02-06
  • 2011-02-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-27
相关资源
最近更新 更多