Created
March 28, 2011 16:26
Revisions
-
Jeremy McPeak revised this gist
Nov 3, 2011 . 1 changed file with 27 additions and 23 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -1,33 +1,37 @@ public static class RazorExtensions { // a quick and simple repeater helper method // header and footer templates could be added public static HelperResult Repeater<T>( this IEnumerable<T> items, Func<T, HelperResult> itemTemplate, Func<T, HelperResult> alternatingItemTemplate = null, Func<T, HelperResult> separatorTemplate = null) { return new HelperResult(writer => { if (items.Count() > 0) { var last = items.Last(); int i = 0; foreach (var item in items) { var func = (i % 2 != 0 && alternatingItemTemplate != null) ? alternatingItemTemplate : itemTemplate; func(item).WriteTo(writer); if (separatorTemplate != null && !item.Equals(last)) { separatorTemplate(item).WriteTo(writer); } i++; } } }); } } // Usage -
jwmcpeak created this gist
Mar 28, 2011 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,38 @@ // a quick and simple repeater helper method // header and footer templates could be added public static HelperResult Repeater<T>( this IEnumerable<T> items, Func<T, HelperResult> itemTemplate, Func<T, HelperResult> alternatingItemTemplate = null, Func<T, HelperResult> separatorTemplate = null) { return new HelperResult(writer => { if (items.Count() > 0) { var last = items.Last(); int i = 0; foreach (var item in items) { var func = (i % 2 != 0 && alternatingItemTemplate != null) ? alternatingItemTemplate : itemTemplate; func(item).WriteTo(writer); if (separatorTemplate != null && !item.Equals(last)) { separatorTemplate(item).WriteTo(writer); } i++; } } }); } // Usage @{ var names = new string[] { "Jeremy", "Jason", "Jeffrey", "John", "Jethro" }; } @names.Repeater(@<p class="classOne">@item</p>, alternatingItemTemplate: @<p class="classTwo">@item</p>, separatorTemplate: @<hr />)