C#MVC:网格中的可选列(foreach)
我有这样的代码:
我的问题:根据用户设置,可以将这些列(标题,容量和/或计数)的任何组合设置为不显示。
我如何在我的代码中创建这个条件?
在控制器端,您可以将设置存储在ViewData中:
base.ViewData["TitleVisible"] = false;
……在视图中:
<% foreach (var item in Model) { %> <% if ((bool)ViewData["TitleVisible"]){ %> <%= Html.Encode(item.Title) %> <%}%> <%= Html.Encode(item.Capacity) %> <%= Html.Encode(item.Count) %> <% } %>
根据用户设置,可以将这些列的任何组合(标题,容量和/或计数)设置为不显示。
有很多方法可以做到这一点。 取决于您如何记录和存储这些条件。
<%if(item.ShowTitle){%> <%= Html.Encode(item.Title) %> <%}%>
要么
<%if(Session.Current.ShowTitle){%> <%= Html.Encode(item.Title) %> <%}%>
或创建一个帮助程序,决定在代码中显示什么:
<% foreach (var item in Model) { Html.CreateItem(item); }%>
或者你能做到的许多其他方式之一。
或者,您可以根据用户的设置创建不同的视图,从而将if逻辑保留在控制器中。 可能或不是一个好主意,取决于应用程序的其余部分,但这是需要考虑的事情。
你不能将用户的偏好存储在属性包中,然后在循环中引用这些首选项吗?
该行将由三个if语句组成,这些语句可以填充元素或空白元素。
<% foreach (var item in Model) { %> <% if(CONDITION) { <%= Html.Encode(item.Title) %> <% } else { %>   ; <% } %> <% } %>
请记住在表数据为空白时进行说明,否则您将遇到渲染问题。 取出非破碎空间线的空间。
- ASP MVC和WinForm应用程序之间的通信
- 可以在Asp.Net Web Api路由中使用句点吗?
- 如何从asp.net mvc 2应用程序中的自定义ValidationAttribute内部访问其他属性值?
- 在ASP.Net MVC中路由之前的数据库选择
- ASP.NET C#MVC – 直接在DB或Model上更改datetime的格式
- ASP.NET MVC – HybridViewResult(ViewResult / PartialViewResult)
- 有问题的MVC控制器上的Async vs Sync基准测试
- 如何在MVC 4中为枚举创建默认编辑器模板?
- Google AnalyticsAPI会显示网页浏览量