C#MVC:网格中的可选列(foreach)
我有这样的代码:C#MVC:网格中的可选列(foreach),c#,asp.net-mvc,C#,Asp.net Mvc,我有这样的代码: <% foreach (var item in Model) { %> <tr> <td> <%= Html.Encode(item.Title) %> </td> <td> <%= Html.Encode(item.Capacity) %> </td>
<% foreach (var item in Model) { %>
<tr>
<td>
<%= Html.Encode(item.Title) %>
</td>
<td>
<%= Html.Encode(item.Capacity) %>
</td>
<td>
<%= Html.Encode(item.Count) %>
</td>
</tr>
<% } %>
我的问题:根据用户设置,这些列的任何组合(标题、容量和/或计数)都可能设置为不显示
如何在代码中创建此条件?在控制器端,您可以将设置存储在ViewData中:
base.ViewData["TitleVisible"] = false;
。。。
他认为:
<% foreach (var item in Model) { %>
<tr>
<% if ((bool)ViewData["TitleVisible"]){ %>
<td>
<%= Html.Encode(item.Title) %>
</td>
<%}%>
<td>
<%= Html.Encode(item.Capacity) %>
</td>
<td>
<%= Html.Encode(item.Count) %>
</td>
</tr>
<% } %>
您不能将用户的首选项存储在属性包中,然后在循环中引用这些首选项吗 该行将由三个if语句组成,它们要么绘制填充元素,要么绘制空白元素 根据用户设置,任何 这些列的组合(标题、, 容量和/或计数)可设置为 不显示 有很多方法可以做到这一点。取决于您如何记录和存储这些条件
<%if(item.ShowTitle){%>
<td>
<%= Html.Encode(item.Title) %>
</td>
<%}%>
或
或者创建一个帮助器来决定在代码中显示什么:
<% foreach (var item in Model) { Html.CreateItem(item); }%>
或者您可以使用多种其他方法中的一种。
<% foreach (var item in Model) { %>
<tr>
<td>
<% if(CONDITION) {
<%= Html.Encode(item.Title) %>
<% } else { %>
  ;
<% } %>
</td>
</tr>
<% } %>
或者,您可以根据用户的设置创建不同的视图,从而将if逻辑保留在控制器中。可能是个好主意,也可能不是,这取决于应用程序的其他部分,但这是需要考虑的
<% foreach (var item in Model) { %>
<tr>
<td>
<% if(CONDITION) {
<%= Html.Encode(item.Title) %>
<% } else { %>
  ;
<% } %>
</td>
</tr>
<% } %>