【问题标题】:how to show message box in asp.net如何在asp.net中显示消息框
【发布时间】:2011-10-20 12:51:40
【问题描述】:

我正在使用 C# 创建一个网站,并尝试显示一个消息框。我正在尝试在这种情况下使用 JavaScript,如果我执行以下操作,它就会运行:

Response.Write("<script LANGUAGE='JavaScript' >alert('Login Successful')</script>");  

但是,如果我这样做:

Response.Write("<script LANGUAGE='JavaScript' >alert('Login Successful')</script>");    
Response.Redirect("~/admin.aspx");

消息框不显示。

为什么会这样,我该如何解决?

【问题讨论】:

标签: c# javascript asp.net


【解决方案1】:

通过在您实际向客户端发送 302 重定向后立即执行 Response.Redirect,因此警报实际上永远不会在用户的浏览器中呈现。相反,尝试这样的事情

    Response.Write("<script LANGUAGE='JavaScript' >alert('Login Successful');document.location='" + ResolveClientUrl("~/admin.aspx") +"';</script>");

【讨论】:

  • 好的,谢谢大家的支持,我觉得我知识有些欠缺。
【解决方案2】:

您的Response.Redirect 调用将在alert 显示给用户之前触发并重定向浏览器。

【讨论】:

    【解决方案3】:

    由于以下行,写入响应的 JavaScript 没有运行:

    Response.Redirect("~/admin.aspx");
    

    这会将响应从当前页面重定向到 Admin.aspx。写入响应的任何进一步内容都不会被呈现和执行,因为正在指示浏览器导航到新位置。

    【讨论】:

      【解决方案4】:

      使用

      ClientScript.RegisterStartupScript(Me.GetType(), "fnCall", "<script language='javascript'>alert('Login Successful! ');</script>")
      
       Response.Redirect("~/admin.aspx"); 
      

      希望有所帮助

      【讨论】:

        【解决方案5】:

        对于从 UpdatePanel 注册脚本,你应该使用这个:

        ScriptManager.RegisterStartupScript(this, GetType(), Guid.NewGuid().ToString(), script, true);
        

        【讨论】:

          【解决方案6】:
          "<script language='javascript'>alert(\"" + "Your Message" + "\")</script>";
          

          编辑:

          一般我们在asp.net中显示一个消息框,通过编写一个常用的方法,以message为参数,如下所示。

          public void UserMsgBox(string sMsg)
          {
              try {
                  StringBuilder sb = new StringBuilder();
                  System.Web.UI.Control oFormObject = null;
                  sMsg = sMsg.Replace("'", "\\'");
                  sMsg = sMsg.Replace(Strings.Chr(34), "\\" + Strings.Chr(34));
                  sMsg = sMsg.Replace(Constants.vbCrLf, "\\n");
                  sMsg = "<script language='javascript'>alert(\"" + sMsg + "\")</script>";
                  sb = new StringBuilder();
                  sb.Append(sMsg);
                  foreach (System.Web.UI.Control oFormObject_loopVariable in this.Controls) {
                      oFormObject = oFormObject_loopVariable;
                      if (oFormObject is HtmlForm) {
                          break; // TODO: might not be correct. Was : Exit For
                      }
                  }
                  oFormObject.Controls.AddAt(oFormObject.Controls.Count, new LiteralControl(sb.ToString()));
              } catch (Exception ex) {
              }
          }
          

          【讨论】:

          • 是的,我们也可以这样使用。如果它是一个公共方法,那么只需调用并将参数作为我们的字符串传递,就会向用户显示一个消息框。
          • 我理解,但我实际上使用的是脚本管理器,而不是像现在这样自己找到表单控件并添加一个控件
          • 好的,我刚贴出来,按照他的要求他会用。
          • 没问题,我只是想知道你是否有什么特别的原因要避免在这里使用 ScriptManager
          【解决方案7】:

          我也使用过这种方式,但提供了更好的代码项目

           protected void Button1_Click(object sender, EventArgs e)
           {
              ClientScriptManager CSM = Page.ClientScript;
              if (!ReturnValue())
              {
                  string strconfirm = "<script>if(!window.confirm('Are you sure?')){window.location.href='Default.aspx'}</script>";
                  CSM.RegisterClientScriptBlock(this.GetType(), "Confirm", strconfirm, false);
              }
          }
               bool ReturnValue()
               {
                 return false;
               }
          

          【讨论】:

            【解决方案8】:

            这已经晚了,但这是正确的答案,因为下面没有您检查过的答案,您不能使用响应重定向,因为它会在您显示附加在末尾的消息框之前重定向页面页。你应该使用窗口定位方法:

            Response.Write("<script language='javascript'>window.alert('Login Successful.');window.location='admin.aspx';</script>");
            

            【讨论】:

              【解决方案9】:

              如果您使用更新面板,您可以在 .cs 页面中使用此代码显示消息框

              ScriptManager.RegisterStartupScript(this, this.GetType(), "myalert", "alert('Type here your message...')", true);
              

              ScriptManager.RegisterStartupScript(this.ControlID, this.GetType(), "myalert", "alert('Type here your message')", true);
              

              如果您不使用更新面板,则此代码将显示消息框

              ClientScript.RegisterStartupScript(this.GetType(), "myalert", "alert('Type here your message')", true);
              

              【讨论】:

                【解决方案10】:

                这是一个示例程序,您可以在其中将自己的消息调用到消息框中。它对您非常有用。你必须试试我的例子

                protected void btnSubmit_Click(object sender, EventArgs e)
                    {
                        try
                        {
                            if (RadioButtonList1.SelectedItem.ToString() == "Sum Of Digit")
                            {
                                string a = tbInput.Text;
                                int sum = 0;
                                for (int i = 0; i < a.Length; i++)
                                {
                                    sum = sum + Convert.ToInt32(a[i].ToString());
                                }
                                lblResult.Text = sum.ToString();
                            }
                            else if (RadioButtonList1.SelectedItem.ToString() == "InterChange Number")
                            {
                                string interchange = tbInput.Text;
                                string result = "";
                                int condition = Convert.ToInt32(interchange.ToString());
                                if (condition <= 99)
                                {
                
                                    result = interchange[interchange.Length - 1].ToString() + interchange[0].ToString();
                                    lblResult.Text = result.ToString();
                                }
                                else
                                {
                                    MyMessageBox("Number Must Be Less Than 99");
                                }
                            }
                            else if (RadioButtonList1.SelectedItem.ToString() == "Sum Of First n last Digit")
                            {
                                //example
                            }
                            else
                            {
                                MyMessageBox("Not Found");
                            }
                
                        }
                        catch (Exception ex)
                        {
                
                           MyMessageBox(ex.ToString());
                        }
                    }
                    public void MyMessageBox(string text)
                    {
                        string script = "alert('"+text+"');";
                        ScriptManager.RegisterStartupScript(this, GetType(), "ServerControlScripts", script, true);
                    }
                }
                

                【讨论】:

                • 这甚至与提出的问题没有密切关系
                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2017-03-21
                • 1970-01-01
                • 2012-07-03
                • 1970-01-01
                相关资源
                最近更新 更多