Я работаю над библиотекой элементов управления FBML на Facebook и хотел бы создать элементы управления FBML, в некоторой степени аналогичные библиотеке ASP.NET WebControls. У меня есть базовый класс, который обрабатывает рендеринг по умолчанию; вот мой метод рендеринга:
protected override void Render(HtmlTextWriter writer)
{
AddAttributesToRender(writer);
if (UseXfbmlSemantics)
{
writer.RenderBeginTag(ElementName);
writer.EndRender();
writer.RenderEndTag();
}
else
{
writer.RenderBeginTag(ElementName);
writer.RenderEndTag();
}
}
Я хотел бы, чтобы рендеринг был изменен на основе UseXfbmlSemantics - если это правда, он должен рендерить, например:
<fb:name uid="10300399458"></fb:name>
Если значение равно false, оно должно отображаться с самозакрывающимся тегом:
<fb:name uid="10300399458" />
Я могу заставить "истинное" условие работать почти корректно, но самозакрывающийся тег кажется несовместимым с набором методов Render. К сожалению, в этом случае это также означает, что шаблон AddAttributesToRender также не будет работать. Что он на самом деле производит, так это:
<fb:name uid="10300399458">
</fb:name>
Как я могу получить HtmlTextWriter (или какой HtmlTextWriter мне нужно использовать), чтобы он отображал самозакрывающийся тег? Или, по крайней мере, как я могу сделать так, чтобы он не отображал этот промежуточный пробел (чтобы открывающий и закрывающий теги были непосредственно рядом друг с другом)?