Запускает подтверждение javascript на основе логики на стороне сервера (ASP.NET )

#javascript #asp.net #button #onclick #confirm

#javascript #asp.net #кнопка #onclick #подтвердите

Вопрос:

Есть ли способ заставить следующий код работать? В принципе, когда я нажимаю на btnOne, если a равно true, я ожидаю, что появится окно подтверждения. И если я нажму да, тогда он выполнит метод btnTwo. В противном случае он ничего не сделает. На данный момент он не вызывает всплывающее окно, и я не уверен, почему. Может кто-нибудь, пожалуйста, указать мне правильное направление? или, возможно, дайте мне знать другой способ достижения этой цели.

Любая информация будет высоко оценена.

Например:

 public void btnTwo(object sender, EventArgs e)
{
    //Do some processing
}

public void btnOne(object sender, EventArgs e)
{
    if( a == true )
        btnTwo.Attributes["onClick"] = "return confirm('test');"

    btnTwo(sender, new EventArgs());
}
  

Комментарии:

1. Что такое a ? И где вы вызываете что-либо на стороне сервера?

2. предполагая, что a — это некоторая переменная, которая была где-то установлена. да, это со стороны сервера

Ответ №1:

Я думаю, что вы смешиваете много клиентской и серверной сторон? Не могли бы вы проверить «a» (скрытое поле) на стороне клиента?

Или после проверки значения в коде, добавленном в сценарий запуска, с подтверждением, а затем на да «нажмите» вторую кнопку в javascript.

 Protected Sub btnSecond_Click(sender As Object, e As System.EventArgs) Handles btnSecond.Click
    Me.lblInfo.Text = "SecondClick is done!"
End Sub

Protected Sub btnFirst_Click(sender As Object, e As System.EventArgs) Handles btnFirst.Click
    a = 10
    Dim action As String = "<script> if(confirm('sure ?')){  document.getElementById('" amp; btnSecond.ClientID amp; "').click()} </script>"
    If (a > 5) Then
        Page.ClientScript.RegisterStartupScript(Me.Page.GetType(), "startConfirm", action)
    End If
End Sub
  

И разметка:

 <form id="form1" runat="server">
<div>
    <asp:Button runat="server" ID="btnFirst" />
    </br>
    <asp:Button runat="server" ID="btnSecond" />
    <asp:Label runat="server" ID="lblInfo" />
</div>
</form>
  

Ответ №2:

Убедитесь, что код достигнут, и используйте OnClientClick вместо:

 protected void Page_Load(object sender, EventArgs e)
{
    bool a = true;        
    if (a)
        btnTwo.OnClientClick = "return confirm("Are you sure?");";
}
  

Комментарии:

1. Спасибо, Джеймс. Я попробовал, но всплывающее окно подтверждения не появилось.