Вопреки общепринятому и популярному ответу @Andrew Hare. Я предпочел бы реализовать генерацию разметки только в javascript (и использовать ее повторно для построения таблиц HTML), чем реализовывать разметку только в C # (если javascript, конечно, тоже нуждается в этой функциональности).
Потому что:
- Javascript лучше, чем C # для HTML, потому что он может изменять уже обработанный DOM. Таким образом, с Javascript вы можете сделать гораздо больше, чем просто статический HTML. И, может быть, вам это сейчас не нужно, но в наши дни нередки требования, которые направлены на то, чтобы приложение стало более похожим на многофункциональное интернет-приложение.
- Вызовы AJAX, скорее всего, будут медленнее, чем худшая реализация Javascript, которая обрабатывает данные на стороне сервера и преобразует их в новые строки существующей таблицы. А также медленнее, чем создание таблицы с нуля в Javascript.
- Меньше запросов к серверу (и больше требований на стороне клиента, но обычно это не проблема).
- Есть несколько очень хороших Javascript-фреймворков, которые создают действительно хорошие таблицы (и многое другое).
Я знаю, что в ASP.NET MVC есть много хороших примеров того, как использовать HTML Helpers для ваших элементов управления, что приводит к чистой и быстрой разработке. Но если в конечном итоге вы все равно создадите функции Javascript, я думаю, вам следует снова рассмотреть вопрос о разделении задач, придерживаться Javascript и отказаться от дублирования в HTML-помощниках.
Потому что расширение ваших функций Javascript для создания всей таблицы, если вы уже создаете строки, не должно быть таким сложным, как мне кажется. Вот идея о том, как передать данные в Javascript и затем использовать функцию «createRow», которую вы уже используете в Javascript:
<script>
var data = [];
<% foreach (var item in Model) { %>
data.push({
Id: <%= Html.Encode(item.Id) %>
, Title: <%= Html.Encode(item.Title) %>
});
<% } %>
createTableHeader();
for (var i = 0; i < data.length; i++) {
createRow(data[i]);
}
createTableFooter();
</script>