Пользовательский веб-контроль, ITemplate не распознан - PullRequest
1 голос
/ 16 апреля 2009

Надеюсь, что легко, я создал пользовательский элемент управления Repeater, который расширяет System.Web.UI.WebControls.Repeater. Я добавил два свойства ITemplate к этому элементу управления и добавляю их при необходимости и желаемым способом. Все работает абсолютно нормально, но у меня проблема с распознаванием этих новых шаблонов в Visual Studio.

Когда я добавляю ретранслятор на страницу, например:

<my:Repeater ID="rpt" runat="server" NewProperty="This works!">
    <NewTemplate>The contents go here...</NewTemplate>
</my:repeater>

Все работает (woo!), И когда я добавляю атрибуты 'NewProperty', добавленное мной свойство можно увидеть в Intellisense в Visual Studio, как и ожидалось (woo!). Досадно, что новые ITemplate не доступны через Intellisense, и об этом следует помнить из того, что я знал, что они там (бу!). Новый шаблон также имеет подчеркивание «проблема» со следующим сообщением:

Проверка (XHTML 1.0 Transitional): элемент 'newtemplate' не поддерживается.

Это ни в коем случае не является серьезной проблемой, так как при компиляции настраиваемый ретранслятор работает и шаблоны ведут себя так, как им нужно, это скорее раздражение, с которым было бы здорово разобраться.

Спасибо за любую помощь!

Steve

1 Ответ

2 голосов
/ 16 апреля 2009

XHTML требует, чтобы имена элементов начинались со строчной буквы. HTML не чувствителен к регистру, а XHTML -.

Источник: http://www.w3.org/TR/xhtml1/#h-4.2

Чтобы свойство было видимым, вам нужно добавить атрибут PersistenceMode в ваши свойства ITemplate следующим образом:

[PersistenceMode(PersistenceMode.InnerProperty)]
public ITemplate NewTemplate
{
   get;
   set;
}
...