解决方法非可主题化的属性(特别是asp:Button OnClientClick)

时间:2010-03-12 16:57:37

标签: asp.net webforms themes onclientclick

将ASP.NET WebForms主题改造为旧应用程序我需要对<input>标记进行主题化,以使每个主题的JavaScript单击事件都不同。我用asp:Button替换了标记,但只是为了表明OnClientClick属性不是主题。

有人可以为此建议解决方法吗?

1 个答案:

答案 0 :(得分:1)

<强> ThemeableButton

您必须创建一个派生自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>