1

例如,如果我要向 ASP.Net 更新面板页面返回响应,但使用 Response.Write 然后在呈现任何内容之前结束它,那么我需要在 Response.Write 中写入的最小值是多少?

4

1 回答 1

1

如果您采用以下 UpdatePanel ...

<asp:UpdatePanel runat="server" id="updatePanel" ChildrenAsTriggers="True">
    <ContentTemplate>
        <asp:TextBox runat="server" ID ="textbox1"/>
        <asp:Button  runat="server" ID="go" OnClick="OnGo" text="Go"/>
    </ContentTemplate>
</asp:UpdatePanel>

...然后单击按钮并在 Firebug 中查看响应,您会得到类似这样的信息(我已经截断了视图状态和事件验证以使其更具可读性):

265|updatePanel|updatePanel|
<input type="text" name="textbox1" value="content" id="input1" />
<input type="submit" name="go" value="Go" id="go" />|
52|hiddenField|__VIEWSTATE|/wXPZwUK...|
64|hiddenField|__EVENTVALIDATION|/wEWB...|
0|asyncPostBackControlIDs|||0|postBackControlIDs|||
12|updatePanelIDs||tupdatePanel|0|childUpdatePanelIDs|||
11|panelsToRefreshIDs||updatePanel|2|asyncPostBackTimeout||90|20|
formAction||Upagename.aspx|13|pageTitle||Untitled Page|

所有这些额外数据都是ScriptManager重建 UpdatePanel 内容所需的东西:控件 ID、页面名称、视图状态等。这是您必须Response.Write手动ScriptManager完成的工作才能完成的工作。

有关详细信息,请参阅“ ScriptManager 在您的 Web 应用程序中启用 AJAX ”。在标题为“将 AJAX 放入 ASP.NET AJAX”部分的末尾,作者解释了发生了什么:

最后,客户端框架从服务器获取异步响应并解析出数据。ScriptManager 控件已将所有控件 ID 和新标记打包到响应中,因此客户端框架可以简单地对浏览器的文档对象模型执行脚本操作以更新页面内容。

于 2009-10-16T14:37:38.563 回答