Функция __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%>','')