ASP.NET Server control испускающий серверные теги - PullRequest
0 голосов
/ 19 февраля 2010

Я новичок в написании пользовательских серверных элементов управления ASP.NET и столкнулся со следующей проблемой:

У меня есть элемент управления, наследуемый от System.Web.UI.HtmlControls.HtmlGenericControl.Я переопределяю метод Render элемента управления, использую HtmlTextWriter, чтобы выдать некоторый пользовательский HTML (в основном тег TD с некоторыми пользовательскими атрибутами), а затем вызываю метод класса Render класса *. 1006 *

Использование элемента управления:

<dc:Header id="header1" runat="Server" DataColumn="MemberNumber" Width="30%">Member Number</dc:Header >

Проблема заключается в том, что при просмотре отрисованного HTML-кода серверный тег также отправляется клиенту (сразу после тега TD):

<dc:Header id="ctl00_ContentPlaceHolder_testData1_testData1_header1">Member Number</dc:Header>

Какя могу предотвратить это?

1 Ответ

2 голосов
/ 19 февраля 2010

Базовый метод рендеринга генерирует тэги в RenderBeginTag и RenderEndTag(), просто не вызывайте его, если вы делаете свой собственный рендеринг. Я также не стал бы наследовать от HtmlGenericControl, если вы можете помочь, просто наследуйте от WebControl или Control, даже если вам не нужен ни один из атрибутов WebControl.

Обычный метод Render() делает это:

protected override void Render(HtmlTextWriter writer)
{
   RenderBeginTag(writer);
   RenderContents(writer);
   RenderEndTag(writer);
}

Пока вы называете то, что вам нужно, вероятно, RenderContents() в вашем случае, не нужно звонить base.Render(writer).

Если вы все еще хотите переопределить HtmlGenericControl, обязательно установите свойство TagName .

...