Как добавить пользовательский атрибут в адаптер веб-управления с поддержкой intellisense? - PullRequest
0 голосов
/ 14 декабря 2011

Я создал адаптер CheckBoxList, который наследуется от System.Web.UI.WebControls.Adapters.WebControlAdapter.Теперь я хотел бы знать, как я могу добавить пользовательский атрибут в свой адаптер и как 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 ]

3 голосов
/ 21 июня 2012

Нельзя добавить пользовательские свойства в веб-элемент управления через WebControlAdapter (см. «Недостатки адаптеров управления» http://www.singingeels.com/Articles/How_To_Control_Adapters.aspx).

Ваш лучший подход - создать собственный класс, унаследованный от CheckBoxList (эта статья старая, но, вероятно, все еще применима http://www.4guysfromrolla.com/articles/100103-1.aspx),, создать свой собственный UserControl или создать свой собственный ServerControl. Я бы выбрал вариант 1 или 2.

0 голосов
/ 14 декабря 2011

Украсьте каждое свойство, которое вы хотите видеть в разметке, с помощью CategoryAttribute как:

[Category("Settings")]

С моей точки зрения, будет достаточно следующего:

public string DisabledCssClass { get; set; }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...