ASP.net 2.0,Visual Studio 2005以及<asp:DropDownList>
等标准控件要求我放入AutoPostBack="true"
以便调用后面的代码。但为什么?这不应该发生吗?
感谢
答案 0 :(得分:1)
代码隐藏在服务器上运行。 HTML代码和Javascript在浏览器上运行。
下拉列表是在浏览器上运行的HTML元素。如果不将数据发送回服务器,它就无法在服务器上执行任何操作。 ASPX Web表单向服务器发送数据的方式是通过回发。
有时您不希望下拉列表将数据发送到服务器。它真的减慢了用户体验,不得不等待某些东西穿过电线。为了加快速度,您可以禁用列表控件上的回发;只有当用户发布整个表单时才会联系服务器。此时,服务器可以检查列表控件以查看其值是否已更改并采取措施。
答案 1 :(得分:1)
不,不管怎么说都不应该这样。
asp:DropDownList
是一个生成单个下拉列表的控件。这将呈现为客户端的select
标记。 select
代码通常用于收集来自用户的输入,而不是提交表单。
强制AutoPostBack="true"
是必要的,因为每当所选索引发生变化时,您都会进行回发。虽然这很有用,但不 select
标记的预期行为,并且大多数开发人员都不会想要此操作...出于性能原因...或者如果它是一个更大的形式的一部分,它将中断用户流程......等。
答案 2 :(得分:0)
替代方案是他们只调用javascript(在客户端上)而不是往返服务器(回发)。
Javascript更快,因为它在客户端上并且不需要往返服务器,但可以由用户禁用或更改。