使用__doPostBack()
是否可以,或者不推荐使用它,因为它是从ASP.Net生成的,我们不确定他们是否在下一版本的ASP.Net中更改了它。
答案 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')
在某些情况下。