为什么我必须强制AutoPostBack =“true”?

时间:2013-10-08 02:03:52

标签: asp.net code-behind autopostback

ASP.net 2.0,Visual Studio 2005以及<asp:DropDownList>等标准控件要求我放入AutoPostBack="true"以便调用后面的代码。但为什么?这不应该发生吗? 感谢

3 个答案:

答案 0 :(得分:1)

代码隐藏在服务器上运行。 HTML代码和Javascript在浏览器上运行。

下拉列表是在浏览器上运行的HTML元素。如果不将数据发送回服务器,它就无法在服务器上执行任何操作。 ASPX Web表单向服务器发送数据的方式是通过回发。

有时您不希望下拉列表将数据发送到服务器。它真的减慢了用户体验,不得不等待某些东西穿过电线。为了加快速度,您可以禁用列表控件上的回发;只有当用户发布整个表单时才会联系服务器。此时,服务器可以检查列表控件以查看其值是否已更改并采取措施。

答案 1 :(得分:1)

不,不管怎么说都不应该这样。

asp:DropDownList是一个生成单个下拉列表的控件。这将呈现为客户端的select标记。 select代码通常用于收集来自用户的输入,而不是提交表单。

强制AutoPostBack="true"是必要的,因为每当所选索引发生变化时,您都会进行回发。虽然这很有用,但 select标记的预期行为,并且大多数开发人员都不会想要此操作...出于性能原因...或者如果它是一个更大的形式的一部分,它将中断用户流程......等。

答案 2 :(得分:0)

替代方案是他们只调用javascript(在客户端上)而不是往返服务器(回发)。

Javascript更快,因为它在客户端上并且不需要往返服务器,但可以由用户禁用或更改。

相关问题