Пользовательский веб-контроль, 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;
}