Как избежать ошибки проверки таблицы, вложенной в span w3c, на странице aspx vb.net?

Я пытаюсь сделать свой сайт полностью совместимым с валидатором w3c.

На данный момент я получаю сообщение об ошибке, потому что таблица, созданная программно и вставленная в текстовый атрибут метки, отображается как таблица, вложенная в тег span.

e.g

MyPage.aspx.vb

strHtml = "<table><tr><td>Hello World</td></tr></table>" 
Me.myTable.Text = strHtml

MyPage.aspx

<asp:Label ID="myTable" runat="server" Text="testimonialTable"></asp:Label> 

Отображается как:

<span id="ctl00_Main_myTable">
<table><tr><td>Hello World</td></tr></table>
</span>

Когда я затем проверяю свою страницу на validator.w3.org, я получаю следующую ошибку:

тип документа не позволяет использовать здесь элемент "таблица"; отсутствует один из начальных тегов "object", "applet", "map", "iframe", "button", "ins", "del"

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

Я предполагаю, что это потому, что я пытаюсь поместить блочный элемент (таблицу) внутрь встроенного элемента (диапазона), но я не знаю, как еще это сделать!

У кого-нибудь есть идеи обходного пути?

Спасибо,

Бен


person user286693    schedule 04.03.2010    source источник


Ответы (3)


Используйте Literal вместо Label, чтобы избежать обертывания элемента <span>:

<asp:Literal ID="myTable runat="server" />
person Jørn Schou-Rode    schedule 04.03.2010
comment
Ты легенда! (Из интереса, лучше ли использовать литералы вместо меток? - Извините, новичок!) - person user286693; 05.03.2010
comment
Это зависит от того, что вы делаете. Label отображает элемент <span> или <label>, стиль которого может быть изменен с использованием свойств элемента управления. Literal отображает только значение своего свойства Text и не предоставляет средств для стилизации. Для внедрения HTML в объектную модель хорошо работает Literal. Однако внедрение HTML несколько нарушает абстракцию элемента управления ASP.NET, и вы можете подумать, можно ли вместо этого построить таблицу с использованием GridView или Table. - person Jørn Schou-Rode; 05.03.2010

Используйте панель и добавьте к ней элемент управления generichtml.

person Dustin Laine    schedule 04.03.2010

Почему бы просто не использовать элемент управления Table:

<asp:Table ID="myTable" runat="server" />

Затем просто создайте столбцы и строки и добавьте их на сервер таблицы.

person tvanfosson    schedule 04.03.2010