我正在学习ASP.NET,主要是通过阅读一本书,但也努力实际上做了一些事情。但是,我遇到了一个我不明白的关于列表控件的解释。这就是它说:请帮我理解一个ASP.NET控件的AutoPostBack属性
“[在智能任务面板的情况下] ... 最后一个选项设置控件的AutoPostBack属性选中该选项时,控制系统将提交它包含在页面只要用户从列表中选择一个新项目就立即回到服务器“
您能为我解释这个声明吗?在此先感谢您的帮助。
我正在学习ASP.NET,主要是通过阅读一本书,但也努力实际上做了一些事情。但是,我遇到了一个我不明白的关于列表控件的解释。这就是它说:请帮我理解一个ASP.NET控件的AutoPostBack属性
“[在智能任务面板的情况下] ... 最后一个选项设置控件的AutoPostBack属性选中该选项时,控制系统将提交它包含在页面只要用户从列表中选择一个新项目就立即回到服务器“
您能为我解释这个声明吗?在此先感谢您的帮助。
对于正常的客户端控件(如与AutoPostBack
列表控制设置为false
),当用户在列表中选择一个项目时,浏览器不不与服务器进行通信。在用户看到选择结果之前,没有网络流量和延迟,但也没有机会在服务器代码中执行任何操作,例如计算相关值。如果您想根据选择对屏幕执行任何操作,则必须使用客户端脚本。
当AutoPostBack
设置为true
时,选择列表中的项目向服务器发送消息(通过HTTP POST)。然后,ASP.NET执行你附加到列表的已更改事件的任何代码,重新构建页面,并将修改后的页面发送给客户端。
当用户选择ListItem(或任何集合项目)时,页面应该自动使用POST事件将Web窗体提交给服务器。
这里的一对HTTP POST事件的维基百科页面 http://en.wikipedia.org/wiki/HTTP_POST
如果您在与对照组中AutoPostBack="true"
,当它的价值的变化,它会自动回发到服务器。
例如,如果您想要一个下拉列表,当更改在下面的表格中显示不同的数据时,您可能想要回发获取新值,以便您的页面可以刷新数据。
这与下拉式样相反,点击旁边的按钮可以回发,所以不要更改值,点击按钮,您可以用AutoPostBack="true"
更改值。
Page
中包含的asp.net控件的责任是渲染用户最终会在浏览器中看到的html的一部分。某些控件支持AutoPostBack
属性。它所做的是让控件发出一些额外的javascript,只要该控件的值发生更改就会提交表单,以便您可以在服务器端对此进行响应。
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
我希望这是有用的