Функция __doPostBack() не работает (asp.net)

Я пытаюсь вызвать событие кнопки из кода JS. Но doPostBack в функции JS 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 ответа

Похоже, вам не хватает 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(), чтобы увидеть, как работает элемент управления.

Прошло много времени с тех пор, как я это сделал, но я думаю, что это должен быть идентификатор сервера, а не идентификатор клиента кнопки.

 __doPostBack('<%= button1.UniqueID%>','')
Другие вопросы по тегам