Пользовательский веб-контроль, ITemplate не распознается

Надеюсь, что это легко, я создал пользовательский элемент управления 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' не поддерживается.

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

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

Стив

1 ответ

Решение

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

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

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

[PersistenceMode(PersistenceMode.InnerProperty)]
public ITemplate NewTemplate
{
   get;
   set;
}
Другие вопросы по тегам