可以使用__doPostBack()吗?

时间:2011-03-27 11:07:08

标签: asp.net dopostback

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

5 个答案:

答案 0 :(得分:18)

我会反对它,因为它是ASP.NET的内部内容,并且从未打算直接使用。

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

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

然后JS是:

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

这样我就不在乎如何回发,我只是触发事件的自然流动。

答案 1 :(得分:8)

你不应该直接打电话。您应该使用Page.ClientScript中的函数生成 javascript调用,例如:

这将确保它始终兼容。

答案 2 :(得分:1)

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

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

答案 3 :(得分:1)

我认为直接使用它完全没问题,并且使用它没有失败,它毕竟只是一个javascript函数。

答案 4 :(得分:0)

我们在整个地方都使用它,我无法想象它会被剥离出来。我认为虚假/隐藏按钮方法就像新手一样,如果不是更糟糕的话。如果您使用假按钮方法,则无法传递__EVENTARGUMENT。我喜欢使用__EVENTARGUMENT将我的数据传递到服务器比创建隐藏字段更好,因为对于黑客来说,妥协比仅仅将一些隐藏字段发回到我的页面要困难。我也不喜欢在页面上创建字段和控件的想法,如果它们甚至不会被显示。我确信新手编码器可以更容易理解假按钮方法。话虽如此,我正在寻找一种更优雅的方式来解决这个问题,但仍然发现自己正在呼唤

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

在某些情况下。