Response.write和ASP.NET控件

时间:2014-05-17 09:13:38

标签: asp.net vb.net

请参阅以下代码:

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?

1 个答案:

答案 0 :(得分:2)

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

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