ASP.NET Razor ビューの話。
Twitter 上で
@neuecc さんが、
とのこと。
上記ツイート中に貼られている、
@neuecc さんのブログ記事はこちら。
Razorで空テンプレートとセパレータテンプレート
http://neue.cc/2013/02/02_395.html
以下引用:「Razorに限らずT4でもなんでもいいんですが、テンプレートで素のforeachだと、セパレータだったり空の時の代替テンプレートだったりを、どういう風に表現すればいいのかなあ、と悩ましいのです、どうなっているのでしょう実際世の中的に。」
@shibayan 曰く、
ということで、割と自分もテンプレートデリゲート派だったので、試しに実装してみた。
ちなみに、テンプレートデリゲートについては、上記
@shibayan のツイートにあるように、以下の
Phill Haack 氏のブログを参照されたし。
Templated Razor Delegates
http://haacked.com/archive/2011/02/27/templated-razor-delegates.aspx
さて、ということで、Repeater という名前で HTMLヘルパーを自作してみた。
以下はその自作ヘルパを用いた例。
実装はプロジェクト一式まるごと GitHub に置いておいた。
https://github.com/jsakamoto/RepeaterHelperSample/blob/master/RepeaterHelperSample/RepeaterHelper.cs
偶数行/奇数行で違うテンプレートを指定したり、あるいは何アイテム目を列挙中かの数値変数を混入させたり、あるいは「@item」じゃなくて、「@comic」等々自分の好きな名前で列挙アイテムを示すとかの拡張も可能だが、まずは基本コンセプトを示すということでここまでに留める。
個人的には if 文で判定するよりは、省略可能な名前付き引数で、明示的にテンプレートを渡すほうが好きですね。
以上、どうぞご参考まで。