请帮助我了解ASP.NET控件的AutoPostBack属性

时间:2010-03-09 14:02:35

标签: asp.net

我正在学习ASP.NET,主要是通过阅读一本书,但也在努力实际做事。但是,我遇到了关于列表控件的解释,我不明白。这就是它所说的:

“[在Smart Tasks面板的上下文中] ... 最后一个选项设置控件的AutoPostBack属性。选中此选项后,控件将其包含的页面提交回服务器用户从列表中选择一个新项目

你能为我解释这个陈述吗?在此先感谢您的帮助。

6 个答案:

答案 0 :(得分:6)

对于普通客户端控件(例如AutoPostBack设置为false的列表控件),当用户选择列表中的项目时,浏览器会进行通信与服务器。您的用户在看到所选内容之前没有网络流量且没有延迟,但也没有机会在您的服务器代码中执行任何操作,例如计算相关值。如果您想对屏幕做任何事情以响应选择,您必须使用客户端脚本。

AutoPostBack设置为true时,选择列表中的项目会向服务器发送消息(通过HTTP POST)。然后ASP.NET执行您附加到列表更改事件的任何代码,重建页面,并将修改后的页面发送到客户端。

答案 1 :(得分:3)

如果在控件上设置AutoPostBack="true",当它的值发生变化时,它将自动回发到服务器。

例如,如果您想要一个下拉列表,当更改后显示下表或其他内容中的不同数据时,您可能希望回发获取新值,以便您的页面可以刷新数据。

这与下拉列表的样式以及您单击以回复的旁边的按钮相反,因此,不要更改值,而是单击按钮,您只需使用AutoPostBack="true"更改值。

答案 2 :(得分:3)

ListBox有一个SelectedIndexChanged事件,您可以处理该事件以检测ListBox中所选项的更改时间。你可以这样配置:

<asp:ListBox ID="ListBox1" runat="server" OnSelectedIndexChanged="ListBox1_SelectedIndexChanged"/>

protected void ListBox1_SelectedIndexChanged(object sender, EventArgs e)
{
    // Do something         
}

使用AutoPostBack="false"(默认值),该事件处理程序实际上并未在“实时”中发生在服务器上。用户必须执行不相关的操作才能提交(POST)表单,例如单击按钮,以便在服务器上触发该事件。

如果您想对该活动采取“实时”操作,请设置AutoPostBack="true",以便每次更改所选项目时自动提交表单。

好处 - 您可以获得事件的“实时”通知。缺点 - 页面与服务器的关系更多,因此每次点击都会花费带宽并导致客户端“滞后”。

进一步阅读:http://www.dotnetspider.com/resources/189-AutoPostBack-What-How-works.aspx

答案 3 :(得分:1)

当用户选择ListItem(或任何集合项)时,页面应自动使用POST事件将Web表单提交给服务器。

这是关于HTTP POST事件的维基百科页面 http://en.wikipedia.org/wiki/HTTP_POST

答案 4 :(得分:1)

Page中包含的asp.net控件的职责是呈现用户最终会在浏览器中看到的html的一部分。某些控件支持AutoPostBack属性。它的作用是它使控件发出一些额外的javascript,只要该控件的值发生变化就会提交表单,以便你可以在服务器端对此作出反应。

答案 5 :(得分:0)

  • 基本上使用AutoPostBack,以便每当控件文本发生某些更改或控件属性发生任何其他更改时,页面都会提交给服务器。
  • 发布页面意味着,页面将提交给服务器。假设我使用了一个文本框,并使其AutoPostBack =&#34; true&#34;,现在我在其中写入一些文本并在文本框外单击,然后页面将刷新。
  • 此刷新表示您输入文本框的值已提交给服务器。
  • 回发由ASP.NET服务器处理。 AutoPostBack会自动将您的页面回发到服务器。
  • 添加事件处理程序。这将为您提供更好的画面。 在您的DropDownList的情况下:添加一个事件处理程序:双击DropDownList,它将路由您到一个事件处理程序:
  • 在事件处理程序中写一些东西让我们说:Response.Write(&#34; message&#34;);
  • 页面将刷新,您将看到您的消息,这意味着页面已发布到服务器,服务器已执行您的事件处理程序并向您显示消息。

我希望这很有用