我有这样的代码:
<% 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>
<% } %>
<% 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>
<% } %>
我的问题:根据用户设置,可以将这些列的任何组合(标题,容量和/或计数)设置为不显示。
如何在我的代码中创建此条件?
答案 0 :(得分:5)
在控制器端,您可以将设置存储在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>
<% } %>
答案 1 :(得分:1)
具体取决于用户设置 这些专栏的组合(标题, 容量和/或计数)可以设置为 不显示。
有很多方法可以做到这一点。取决于您如何记录和存储这些条件。
<%if(item.ShowTitle){%>
<td>
<%= Html.Encode(item.Title) %>
</td>
<%}%>
或
<%if(Session.Current.ShowTitle){%>
<td>
<%= Html.Encode(item.Title) %>
</td>
<%}%>
或创建一个帮助程序,决定在代码中显示什么:
<% foreach (var item in Model) { Html.CreateItem(item); }%>
或其他许多方法之一。
答案 2 :(得分:1)
或者,您可以根据用户的设置创建不同的视图,从而将if逻辑保留在控制器中。可能或不是一个好主意,取决于应用程序的其余部分,但这是需要考虑的事情。
答案 3 :(得分:0)
您是否无法将用户的偏好设置存储在属性包中,然后在循环中引用这些首选项?
该行将由三个if语句组成,这些语句可以填充元素或空白元素。
答案 4 :(得分:0)
<% foreach (var item in Model) { %>
<tr>
<td>
<% if(CONDITION) {
<%= Html.Encode(item.Title) %>
<% } else { %>
  ;
<% } %>
</td>
</tr>
<% } %>
请记住考虑表数据为空的时间,否则您将遇到渲染问题。取出非破碎空间线的空间。