0

ここで奇妙な行動をしています。いくつかのASP.NETリンクボタンコントロールを使用していくつかのhtmlを生成するXSLTがあります

 String mstring = sw.ToString();
 var myctrl = Page.ParseControl(mstring);

      foreach (Control Control in myctrl.Controls)
              {
                  if (Control is LinkButton)
                      {
                         LinkButton lb = (LinkButton)Control;
                         lb.OnClientClick = "LoadPromo";

                       }
                          Panel1.Controls.Add(myctrl);
               }  

  protected void LoadPromo(object sender, EventArgs e)
        {
            Console.Write(e.ToString());

        }

今それはこの制御を取ります:

<asp:LinkButton ID="LinkButton2" runat="server" OnClick="LoadPromo" Text="Get your Free 2" />

イベントを追加すると、これに変更されます。

<a onclick="LoadPromo;" id="dnn_ctr954_ViewPromotions_LinkButton2" href=" WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("dnn$ctr954$ViewPromotions$LinkButton2", "", true, "", "", false, true))">Get your Free 2 a>

ご覧のとおり、onclickをasp.netコントロールではなくjavascriptのように変更します。「LoadPromo」を「LoadPromo;」に変更します。これを回避するために何ができますか?

前もって感謝します

私が試したこと:

 lb.Click += LoadPromo;

私はこの出力を取得します:

<a id="dnn_ctr954_ViewPromotions_LinkButton2" href="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(&quot;dnn$ctr954$ViewPromotions$LinkButton2&quot;, &quot;&quot;, true, &quot;&quot;, &quot;&quot;, false, true))">Get your Free 2</a>
4

1 に答える 1

3

OnClientClick最終的に「onclick」属性にレンダリングされるサーバーコントロールのプロパティの名前です。これは、クライアント側でjavascript関数を呼び出すことを目的としています。したがって、この場合は問題ないように見えます。

OnClickプロパティの場合、Page.aspxのサーバー側関数の名前と一致する必要があります。このためにonclick属性をレンダリングする理由がわかりません。おそらく、正しい署名を持つ「LoadPromo」という名前の関数がないのでしょうか。

次のようなC#メソッドが必要です。

protected void LoadPromo(object sender, EventArgs e)
{

}

次に、これをボタンに接続するには、次のようにします。

myLinkButton.Click += LoadPromo;
于 2010-02-18T17:45:21.983 に答える