@AndrewHareによる受け入れられた人気のある回答とは反対です。C#でのみマークアップを実装するよりも(もちろん、javascriptでもその機能が必要な場合)、javascriptでのみマークアップ生成を実装します(そしてHTMLテーブルを構築するためにそれを再利用します)。
なぜなら:
- Javascriptは、既にレンダリングされたDOMを変更できるため、HTMLのC#よりも優れています。したがって、Javascriptを使用すると、静的HTMLだけでなく多くのことを実行できます。そして、今は必要ないかもしれませんが、今日では、アプリケーションがリッチインターネットアプリケーションのようになることを目的とした要件は珍しくありません。
- AJAX呼び出しは、サーバー側のデータを処理し、それを既存のテーブルの新しい行に変換する最悪のJavascript実装よりも遅くなる可能性が高くなります。また、Javascriptでテーブルを最初から作成するよりも時間がかかります。
- サーバー要求が少なくなります(クライアント側の要件が増えますが、通常は問題ありません)。
- 本当に素晴らしいテーブル(およびそれ以上)を作成する非常に優れたJavascriptフレームワークがいくつかあります。
ASP.NET MVCには、コントロールにHTMLヘルパーを使用する方法に関する優れた例がたくさんあり、クリーンで高速な開発が可能であることを私は知っています。しかし、とにかくJavascript関数を作成することになった場合は、関心の分離をもう一度検討し、Javascriptに固執して、HTMLヘルパーの重複を破棄する必要があると思います。
すでに行を作成している場合は、Javascript関数を拡張してテーブル全体を作成するので、それほど難しいことではないと思います。データをJavascriptに渡し、Javascriptにすでにある関数「createRow」を使用する方法のアイデアを次に示します。
<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>