__doPostBack()函数不起作用(asp.net)

时间:2018-11-28 16:16:03

标签: asp.net onclick postback dopostback

我正在尝试从JS代码触发按钮事件。但是JS函数doPostBack中的reg()并不指向c#代码。请告诉我怎么了。 这是我的代码:

<script>
        function reg() {
            var name = document.getElementById('name').value;
            var id = document.getElementById('cnic').value;
            var age = document.getElementById('age').value;
            var ph = document.getElementById('phone').value;
            var pas = document.getElementById('pass').value;
            if (id == '' || pas == '' || age == '' || ph == '' || pas == '')
                window.alert("Write all fields");
            else {
                __doPostBack('<%= Button1.UniqueID%>','')
            }
        }
    </script>  


 <div >
       <asp:Button id="Button1" OnClientClick="reg()" runat="server" Text="Submit"/>
    </div>

以下是与按钮关联的服务器端c#函数:

 protected void Btn_Click(object sender, EventArgs e)
    {
        Button clickedButton = (Button)sender;
        clickedButton.Text = "...button clicked...";
    }

注意:在else块中,我希望reg()函数重定向到Btn_Click函数。

2 个答案:

答案 0 :(得分:1)

自从我这样做已经有一段时间了,但是我认为它应该是服务器ID,而不是按钮的客户端ID。

 __doPostBack('<%= button1.UniqueID%>','')

答案 1 :(得分:0)

好像您在OnClick中缺少asp:Button

<asp:Button id="Button1" OnClientClick="reg()" runat="server" Text="Submit" OnClick="Btn_Click"/>

ASP.NET中有一个内置方法可以生成__doPostBack()方法。

<%= Page.ClientScript.GetPostBackEventReference(Button1, String.Empty) %>; 

如果更改后仍无法正常工作,建议您单击按钮时使用浏览器调试工具(或Fiddler)的“网络”选项卡检查网络流量。

还要在reg()方法内设置一个断点,以查看控件的运行方式。