У меня есть старое приложение, которое я выбрал, и у меня есть требование пройти проверку html5 и тесты WCAG2.0 AA. Я столкнулся с проблемой с System.Web.Helpers.Webgrid и таблицей, которую он генерирует, когда элемент tfoot генерируется перед элементом tbody, что приводит к сбою проверки. Очевидно, что это было хорошо много лет назад, но с новыми правилами валидации больше не разрешено иметь tfoot впереди tbody.
Есть ли способ заставить webgrid генерировать элемент tfoot после элемента tbody или какой-то простой обходной путь? Простое отключение нижнего колонтитула (без подкачки страниц) не вариант, так как иногда возвращаемые данные будут иметь сотни строк.
Код для создания таблицы:
var grid = new WebGrid(source: Model.Stuff,
defaultSort: "Stamp",
rowsPerPage: 20,
fieldNamePrefix: "wg_",
canPage: true,
canSort: true,
pageFieldName: "pg");
<text>
@grid.GetHtml(tableStyle: "gridtable",
headerStyle: "gridtableheading",
rowStyle: "gridtablerow",
alternatingRowStyle: "gridtablerowalternate",
columns:
grid.Columns(
grid.Column("View", format: (item) => (Html.ActionLink("Select", "View", "Item", new { itemID = item.ID }, null)), style: "padtable centeralign"),
grid.Column("ID", "ID", style: "padtable rightalign"),
grid.Column("CreatedDate", "Stamp", format: (item) => String.Format("{0:MM/dd/yyyy hh:mm tt}", item.CreatedDate), style: "padtable leftalign"),
grid.Column("Type", "Type", style: "padtable rightalign"),
grid.Column("Status", "Status", style: "padtable leftalign"),
), mode: WebGridPagerModes.Numeric)
</text>
Вот обобщенная версия того, что на самом деле генерирует
<!DOCTYPE html>
<html lang="en-US">
<head>
<title>Table Test</title>
</head>
<body>
<table>
<thead>
<tr>
<td>header1</td>
<td>header2</td>
</tr>
</thead>
<tfoot>
<tr>
<td>Previous page link</td>
<td>Next page link</td>
</tr>
</tfoot>
<tbody>
<tr>
<td>table row1 data 1</td>
<td>table row1 data 2</td>
</tr>
<tr>
<td>table row2 data 1</td>
<td>table row2 data 2</td>
</tr>
</tbody>
</table>
</body>