代码之家  ›  专栏  ›  技术社区  ›  James Campbell

dotnetNuke ASP.NET中的parseControl将onclick改为javascript,而不是提供的c方法,这是一种奇怪的行为。

  •  0
  • James Campbell  · 技术社区  · 16 年前

    在这里有一些奇怪的行为。我有一些XSLT,它用几个ASP.NET链接按钮控件生成一些HTML

     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更改为like javascript,而不是ASP.NET控件。它将“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>
    
    1 回复  |  直到 16 年前
        1
  •  3
  •   womp    16 年前

    OnClientClick

    protected void LoadPromo(object sender, EventArgs e)
    {
    
    }
    

    myLinkButton.Click += LoadPromo;
    
    推荐文章