如何使用__doPostBack()

我试图在ASP.NET中使用__doPostBack()创build一个asynchronous的回发,但我不知道该怎么做。 我想使用香草JavaScript。

简单的点击button可能会导致__doPostBack()事件触发。 我只是想了解机制如何工作。

你可以在你的web表单中用一个叫做btnSave的button来试试这个例子:

 <input type="button" id="btnSave" onclick="javascript:SaveWithParameter('Hello Michael')" value="click me"/> <script type="text/javascript"> function SaveWithParameter(parameter) { __doPostBack('btnSave', parameter) } </script> 

而在你的代码后面添加这样的内容来读取值并对其进行操作:

 public void Page_Load(object sender, EventArgs e) { string parameter = Request["__EVENTARGUMENT"]; // parameter // Request["__EVENTTARGET"]; // btnSave } 

试试看,让我们知道如果这对你有用。

这也是获取服务器端控件在FancyBox和/或jQuery对话框中回发的好方法。 例如,在FancyBox-div中:

  <asp:Button OnClientClick="testMe('param1');" ClientIDMode="Static" ID="MyButton" runat="server" Text="Ok" > </asp:Button> 

JavaScript的:

 function testMe(params) { var btnID= '<%=MyButton.ClientID %>'; __doPostBack(btnID, params); } 

服务器端的Page_Load:

  string parameter = Request["__EVENTARGUMENT"]; if (parameter == "param1") MyButton_Click(sender, e); 

这里有一个关于__doPostBack()如何工作的简要教程 。

说实话,我用不了多less; 至less直接。 许多服务器控件(例如ButtonLinkButtonImageButtonGridView等)使用__doPostBack作为它们的回发机制。

我只想为asp:button添加一些内容到这个post。 我试过clientId,它似乎并没有为我工作:

 __doPostBack('<%= btn.ClientID%>', ''); 

但是,获取UniqueId似乎回发到服务器,如下所示:

 __doPostBack('<%= btn.UniqueID%>', ''); 

这可能会帮助别人在将来,因此张贴这个。