Ric*_*ett 10 asp.net-mvc jquery
当使用ASP.NET WebForms ListView控件在HTML表中显示数据时,我使用以下技术来"条带化"表行:
<ItemTemplate>
<tr class="<%# Container.DisplayIndex % 2 == 0 ? "" : "alternate" %>">
<!-- table cells in here -->
</tr>
</ItemTemplate>
Run Code Online (Sandbox Code Playgroud)
使用以下CSS:
tr.alternate
{
background-color: #EFF5FB;
}
Run Code Online (Sandbox Code Playgroud)
我刚刚浏览了ASP.NET MVC 电影数据库应用程序教程,并了解到在MVC-land表中的行可以(必须是?)构造如下:
<% foreach (var item in Model) { %>
<tr>
<td>
<%= Html.Encode(item.Title) %>
</td>
<!-- and so on for the rest of the table cells... -->
</tr>
<% } %>
Run Code Online (Sandbox Code Playgroud)
我可以在此代码中添加哪些条带来划分表格的行?
注意:我知道这可以使用jQuery完成,我想知道它是否可以用另一种方式完成.
如果jQuery(或同等)在您看来是最好或最合适的帖子,我会有兴趣知道原因.
Joe*_*ler 31
另一个不涉及lambdas的选项,比你工作的更干净可能是这个......
<% int i=0; foreach (var item in Model) { %>
<tr class="<%= i++ % 2 == 0 ? "alternate" : "" %>">
<td>
<%= Html.Encode(item.Title) %>
</td>
<!-- and so on for the rest of the table cells... -->
</tr>
<% } %>
Run Code Online (Sandbox Code Playgroud)
扩展方法怎么样?
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);
}
Run Code Online (Sandbox Code Playgroud)
这样你可以说:
<% 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>
<% }); %>
Run Code Online (Sandbox Code Playgroud)
编辑,另外如果你想要索引,你可以使用这样的扩展方法:
public static void Each<T>(this IEnumerable<T> items, Action<T, int> action)
{
int state = 0;
foreach (T item in items)
action(item, state++);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8865 次 |
| 最近记录: |