如何通过智能感知支持向Web控件适配器添加自定义属性?

时间:2011-12-13 23:14:30

标签: c# asp.net custom-controls intellisense web-controls

我创建了一个继承自System.Web.UI.WebControls.Adapters.WebControlAdapter的CheckBoxList适配器。现在,我想知道如何为我的适配器添加自定义属性以及如何让intellisense识别该新属性。

我的属性名为DisabledCssClass,我希望能够编写如下内容:

<asp:CheckBoxList ID="anID" 
    runat="server"  
    CssClass="checkBoxList"
    DisabledCssClass="SomeCssClass"
    DataSourceID="SomeDatasourceId" 
    DataTextField="SomeTextField" 
    DataValueField="SomeValueField"
    RepeatDirection="Vertical" 
    RepeatLayout="Table"
    RepeatColumns="4">
</asp:CheckBoxList>

在我的适配器类中,我添加了:

private string disabledCssClass;

public string DisabledCssClass
{
    get
    {
        return (disabledCssClass == null ? String.Empty : disabledCssClass);
    }
    set
    {
        disabledCssClass = value;
    }
}

我需要知道的两件事是:

  1. 如何使用asp控件中指定的值自动初始化此属性?
  2. 如何让Intellisense识别/显示新属性?

2 个答案:

答案 0 :(得分:3)

您无法通过WebControlAdapter向Web控件添加自定义属性(请参阅“控制适配器的缺点”http://www.singingeels.com/Articles/How_To_Control_Adapters.aspx)。

您最好的方法是创建自己继承自CheckBoxList的类(本文已旧但可能仍然适用http://www.4guysfromrolla.com/articles/100103-1.aspx),创建您自己的UserControl或创建自己的ServerControl。我会选择选项1或2.

答案 1 :(得分:0)

使用CategoryAttribute 装饰要在标记中显示的每个属性:

[Category("Settings")]

从我的观点来看,以下就足够了:

public string DisabledCssClass { get; set; }