0

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);

}
4

3 に答える 3

1

の仕様RegisterStartupScript、特に備考セクションを見てください。

クライアント スクリプトは、キーとタイプによって一意に識別されます。同じキーとタイプのスクリプトは重複と見なされます。特定のタイプとキーのペアを持つ 1 つのスクリプトのみをページに登録できます。すでに登録されているスクリプトを登録しようとしても、スクリプトの複製は作成されません。

毎回GetType()同じキーを介して同じタイプを渡している場合、最初の呼び出しのみがレンダリングされます。これは仕様によるものです。"_jscript"<script>

不十分な修正: 変更しないキーを、"_jscript"実行する検証ごとに異なるキーに置き換えます。"_valNameIsBlank""_valNoItemSpecified"

より良い修正: 次の方法で、複数の検証ポップアップでユーザーを煩わせないようにします。

  • List<string>すべての検証失敗をコンパイルしています
  • すべてのチェックの後、リストにアイテムがあるかどうかを確認します
  • その場合は、それらを単一の検証失敗メッセージに連結し、それを単一のアラートに表示します。
于 2013-01-02T13:30:34.817 に答える
0


私はあなたに何かもっと効果的なもの、衣装のコントロールを与えるでしょう

  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>
于 2013-01-02T13:11:00.987 に答える
0

RegisterStartupScript では、キー値はスクリプトごとに異なる必要があります

すべてのスクリプトで「_jscript」を使用する代わりに、別の KeyValue を試してください。

于 2013-01-09T05:31:51.890 に答える