Я написал несколько расширений HtmlHelper, чтобы помочь с созданием таблиц. Эти расширения используют TagBuilder в коде для генерации строк в соответствии со значениями и определенными атрибутами HTMl. При использовании этих методов расширения код представления значительно чище, а сами методы расширения тестируются, чтобы гарантировать, что они надежно генерируют чистый код.
Пример кода:
<% var alternating = false;
foreach (var model in Model) { %>
<% using (Html.BeginTableRow( new { @class = alternating ? "alternating-row" : "" } )) { %>
<%= Html.TableElement( model.Column1 ) %>
<%= Html.TableElement( model.Column2, new { @class = 'some-class' } ); %>
<%= Html.TableElement( model.Column3 ) %>
<% }
alternating = !alternating;
%>
<% } %>
Кроме того, я фактически создал элемент управления сеткой, который сгенерирует стилизованную таблицу, используя вышеизложенное, и большая часть моего кода представления состоит из визуализации элемента управления сеткой с соответствующей моделью.
<% Html.RenderPartial( "GridControl", Model, ViewData ); %>