【问题标题】:alert box not showing asp.net警告框不显示 asp.net
【发布时间】:2014-05-16 23:27:29
【问题描述】:

这是我的代码

ASPX 代码:

<asp:Button ID="Button4" runat="server" onclick="Button4_Click" Text="Insert" />

C#:

public void MsgBox(String MessageToDisplay)
    {
        Label lblForMsg = new Label();
        lblForMsg.Text = "<script language='javascript'>window.alert('" + MessageToDisplay + "')</script>";
        Page.Controls.Add(lblForMsg);
    }

protected void Button4_Click(object sender, EventArgs e)
    {
SqlCommand com = new SqlCommand("insert into employe values(@id,@pass)", con);

            SqlParameter obj1 = new SqlParameter("@Id", DbType.StringFixedLength);
            obj1.Value = TextBox4.Text;
            com.Parameters.Add(obj1);

            SqlParameter obj2 = new SqlParameter("@pass", DbType.StringFixedLength);
            obj2.Value = TextBox5.Text;
            com.Parameters.Add(obj2);    

            com.ExecuteNonQuery();

            con.Close();

            MsgBox("Account Created");

            if (Session["regis"] == null)
            {
                Response.Redirect("Profile.aspx");
            }
            else
            {
                Response.Redirect("Login.aspx");
            }
      }

我希望当我点击 button4 时,msgbox 显示,然后当我点击 msgbox 上的 ok 时,它会检查条件和对页面的响应。

我正在使用 Visual Studio 2010,asp.net/c#

【问题讨论】:

  • 您调用 MsgBox 但随后您重定向到其他页面。用户的浏览器只会转到另一个页面,而不会看到该消息。
  • @JBrooks 是的,你说得对

标签: c# javascript asp.net


【解决方案1】:

要显示 javascript 警报消息,您应该使用 RegisterClientScriptBlock

public static void ShowMessageAndRedirect(string message, string lpRedirectPage) 
{                
   string cleanMessage = MessageToDisplay.Replace("'", "\'");                               
   Page page = HttpContext.Current.CurrentHandler as Page; 
   string script = string.Format("alert('{0}');", cleanMessage);
   script += " window.location.href='" + lpRedirectPage+ "';"
   if (page != null && !page.ClientScript.IsClientScriptBlockRegistered("alert")) 
   {
       page.ClientScript.RegisterClientScriptBlock(page.GetType(), "alert", script, true /* addScriptTags */);
   } 
} 

这里有类似的问题:JavaScript: Alert.Show(message) From ASP.NET Code-behind

 if (Session["regis"] == null)
 {
     ShowMessageAndRedirect("Account Created","Profile.aspx");
 }
 else
 {
    ShowMessageAndRedirect("Account Created","Login.aspx");
  }

【讨论】:

  • 添加 ScriptManager.GetCurrent(page).IsInAsyncPostBack 如果您在 ScriptManager 上注册ClientScriptBlock 而不是 page.ClientScript 如果为真,则添加检查将使其可用于 ajax 回发
  • @Rick S 如何调用那个 msgbox
  • Show("帐户已创建");
  • @RickS 我正在使用它,但 msgbox 没有显示,它在另一个页面上响应
  • 因为您正在调用 Response.Redirect。我将更新我的答案以包括客户端重定向。您需要取出 Response.Redirect 代码。
【解决方案2】:

因为你喜欢像 windows 窗体那样使用 MsgBox.show()。这门课会帮助你(vb.net)

Imports Microsoft.VisualBasic
Public Class MsgBox
Public Shared Sub Show(ByRef page As Page, ByVal strMsg As String)
    Try
        Dim lbl As New Label
        lbl.Text = "<script language='javascript'>" & Environment.NewLine _
                    & "window.alert(" & "'" & strMsg & "'" & ")</script>"

        page.Controls.Add(lbl)
    Catch ex As Exception

    End Try
End Sub 
End Class

在aspx.page中,可以这样调用

 Msgbox.show(Me,"Alert something")    

【讨论】:

    【解决方案3】:

    在您的服务器端代码中,您尝试添加消息框,但在此之后,无论哪种方式,您的方法都以 Response.Redirect 结束 - 因此您将用户发送到新页面(甚至如果这些页面之一与您来自的页面的 URL 相同)。

    如果您希望消息框显示该过程是否成功(您的“帐户创建”场景),那么您重定向到的任何页面都需要在呈现时包含该 javascript 消息框。

    【讨论】:

      【解决方案4】:

      我认为如果您想显示“为用户创建的帐户,请执行以下操作 =

      Response.Write("window.alert('" + MessageToDisplay + "');");

      【讨论】:

        猜你喜欢
        • 2012-06-15
        • 1970-01-01
        • 2012-08-12
        • 2013-04-28
        • 1970-01-01
        • 2018-03-31
        • 2019-02-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多