簡體   English   中英

使用asp.net的Javascript警報

[英]Javascript alert using asp.net

我想在單擊asp.net按鈕時調出一個js警報框。 我的代碼是

 String jscript = @"<script language = 'javascript'> alert('This is my title');</script>";
 ClientScript.RegisterStartupScript(GetType(), "_jscript", jscript);

它工作正常,但我想稍后再有更多js彈出窗口進行驗證,我假設我必須編寫相同的代碼,但不幸的是,它不會在同一頁面上加載其余的彈出窗口。

這與更新面板有關嗎?

我正在驗證的控件是

if (dp_menu.SelectedIndex > 0)
{
   //continue program
}
else
{
  //show popup
  //this pop p doesn't show up at all?
  String jscript = @"<script language = 'javascript'> alert('Another popup');</script>";
  ClientScript.RegisterStartupScript(GetType(), "_jscript", jscript);

}

看一下RegisterStartupScript規范 ,特別是“備注”部分:

客戶端腳本由其鍵和類型唯一標識。 具有相同鍵和類型的腳本被視為重復腳本。 頁面上只能注冊具有給定類型和密鑰對的一個腳本。 嘗試注冊已注冊的腳本不會創建該腳本的副本。

如果每次通過GetType()和相同的鍵"_jscript"傳遞相同的類型,則僅第一個調用將導致呈現任何<script> 這是設計使然。

較差的解決方案 :對於您執行的每個驗證,請將不變的密鑰"_jscript"替換為其他密鑰,例如"_valNameIsBlank""_valNoItemSpecified"

更好的解決方案 :通過以下方法避免用多個驗證彈出窗口來煩擾用戶:

  • 編譯所有驗證失敗的List<string>
  • 完成所有檢查后,查看列表中是否有任何項目
  • 如果是這樣,請將它們串聯成一條驗證失敗消息,並在一條警報中顯示該消息。

我會給你一些更有效的方法,
服裝控制

  1. 創建新的類庫(Library_name)

將該類添加到庫中

using System.Text;
using System.Web.UI;
using System.ComponentModel;

namespace ClientSide
{
    [DefaultProperty("Text"),
    ToolboxData("<{0}:MessageBox runat=server>" 
        + "</{0}:MessageBox>")]
    public class MessageBox : System.Web.UI.Control 
    {
        private string text="";
        [Bindable(true),
        Category("Appearance"),
        DefaultValue("")]
        public string Text
        {
            get {return text;}
            set {text = value;}
        }

        protected override void Render(HtmlTextWriter output)
        {
            if (text.Length>0)
            {
                StringBuilder sb = new StringBuilder();
                sb.Append("<script language='javascript'>");
                sb.Append("alert('"+text+"')");
                sb.Append("</script>");
                output.Write(sb.ToString());
            }
        }
    }
}

要使用它,您必須在aspx頁面頂部注冊控件

<%@ Register TagPrefix="cc1" Namespace="ClientSide" Assembly="Library_Name" %>

3-然后您可以在aspx頁面中以這種方式使用它

<cc1:MessageBox id="MessageBox1" runat="server" Text="popup Message"></cc1:MessageBox>

在RegisterStartupScript中,每個腳本的鍵值應不同

請嘗試使用不同的鍵值,而不要在所有腳本中都使用“ _jscript”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM