17

是可以使用__doPostBack()还是不推荐使用,因为它是从 ASP.Net 生成的,我们不确定他们是否在 ASP.Net 的下一个版本中更改了它。

4

5 回答 5

18

我会反对它,因为它是内部的东西,ASP.NET而且从来没有打算直接使用。

相反,当我需要“手动”触发 PostBack 时,我正在做的是使用正确的 OnClick 添加隐藏的“服务器端”按钮:

<asp:Button id="btnDummy" runat="server" OnClick="Foo" style="display: none;" />

那么JS是:

document.getElementById("<%=btnDummy.ClientID%>").click();

这种方式我不在乎回发是如何发生的,我只是触发事件的自然流动。

于 2011-03-27T11:18:31.103 回答
9

你不应该直接调用它。您应该使用以下函数生成Page.ClientScriptjavascript 调用:

这将确保它始终兼容。

于 2011-03-27T11:10:36.590 回答
1

他们可能不会改变它,但为什么直接调用它呢?
我认为触发事件(例如单击按钮)并让控件触发回发是更好的策略。

我确实需要直接触发回发,建议使用十四个描述的 Page.ClientScript 函数。

于 2011-03-27T11:13:39.443 回答
1

我认为直接使用它非常好,并且使用它没有失败,毕竟它只是一个javascript函数。

于 2011-03-27T11:13:52.847 回答
0

我们到处都在使用它,我无法想象它会从 ASP.NET 中剥离出来。我认为假/隐藏按钮方法即使不是更糟也是一样的。如果您使用假按钮方法,那么您将无法传递 __EVENTARGUMENT。与创建隐藏字段相比,我更喜欢使用 __EVENTARGUMENT 将我的数据传递给服务器,因为与简单地将一些隐藏字段发回我的页面相比,黑客更难攻破。我也不喜欢在页面上创建字段和控件的想法,如果它们甚至不显示的话。我敢肯定,对于新手编码人员来说,假按钮方法可能更容易理解。话虽如此,我正在寻找一种更优雅的方法来解决这个问题,但仍然发现自己在打电话

    __doPostBack('%=UpdatePanel.ClientID%>','MyData') 

在某些情况下。

于 2017-08-23T19:18:55.247 回答