代码之家  ›  专栏  ›  技术社区  ›  Richard Ev

解决非主题属性(特别是asp:button onclientclick)

  •  0
  • Richard Ev  · 技术社区  · 14 年前

    将ASP.NET WebForms主题改装为旧应用程序我需要为 <input> 标记以使每个主题的javascript单击事件不同。我用标签替换了 asp:Button 只是为了把 OnClientClick 属性不可主题化。

    有人能为此建议一个变通方案吗?

    1 回复  |  直到 14 年前
        1
  •  1
  •   m3kh    14 年前

    可调按钮

    您必须创建一个从 Button .然后重写 OnClientClick 属性并添加 Themeable 属性如下。

    [ToolboxData("<{0}:Button runat=\"server\" />")]
    public class ThemeableButton : Button
    {
    
        [Themeable(true)]
        public override string OnClientClick
        {
            get { return base.OnClientClick; }
            set { base.OnClientClick = value; }
        }
    
    }
    

    Web.CONFIG

    现在,您必须用新按钮替换旧按钮。改变 pages 章节如下。

    <pages>
      <tagMapping>
        <add tagType="System.Web.UI.WebControls.Button, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" 
             mappedTagType="[Namespace].ThemeableButton, [AssemblyName]" />
      </tagMapping>
    </pages>