Согласитесь с Thomas - общее правило ползунка состоит в том, если это имеет смысл на электронной таблице, можно использовать таблицу. Иначе нет.
Просто не используют таблицы в качестве Вашего расположения для страницы, это - люди основной проблемы, имеют с ними.
Я думаю, вам придется унаследовать от HtmlGenericControl
и переопределить метод Render
.
После этого вы сможете писать самостоятельно (или вы можете использовать константу HtmlTextWriter SelfClosingTagEnd
).
Изменить: Вот пример (в VB)
В качестве альтернативы вы можете использовать Page.ParseControl (string)
, который дает вам элемент управления с тем же содержанием, что и передаваемая вами строка.
Я делаю то же самое в своем текущем проекте. Конечно, для этого требуется ссылка на текущую страницу (обработчик), но это не должно создавать никаких проблем.
Единственное предостережение в этом методе, на мой взгляд, заключается в том, что вы не получаете никакого "объектно-ориентированного" подхода для создания вашего элемента управления (например, control.Attributes.Add ("href", theValue " )
и т. Д.)
Я только что создал решение для этого, основываясь на комментариях Рагарата на другом форуме:
http: // форумы .asp.net / p / 1537143 / 3737667.aspx
Замените HtmlGenericControl этим
protected override void Render(HtmlTextWriter writer)
{
if (this.Controls.Count > 0)
base.Render(writer); // render in normal way
else
{
writer.Write(HtmlTextWriter.TagLeftChar + this.TagName); // render opening tag
Attributes.Render(writer); // Add the attributes.
writer.Write(HtmlTextWriter.SelfClosingTagEnd); // render closing tag
}
writer.Write(Environment.NewLine); // make it one per line
}