А как насчет метода расширения?
public static void Alternate<T>(this IEnumerable<T> items, Action<T, bool> action)
{
bool state = false;
foreach (T item in items)
action(item, state = !state);
}
Так вы могли бы сказать:
<% movies.Alternate((movie, alt) => { %>
<tr class="<%= alt ? "alternate" : "" %>">
<td>
<%= Html.Encode(movie.Title) %>
</td>
<!-- and so on for the rest of the table cells... -->
</tr>
<% }); %>
Изменить, кроме того, если вы хотите индекс, вы можете использовать метод расширения, например:
public static void Each<T>(this IEnumerable<T> items, Action<T, int> action)
{
int state = 0;
foreach (T item in items)
action(item, state++);
}