Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#MVC:网格中的可选列(foreach)_C#_Asp.net Mvc - Fatal编程技术网

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 { %>
            &nbsp ;
            <% } %>
        </td>
    </tr>
<% } %>

或者,您可以根据用户的设置创建不同的视图,从而将if逻辑保留在控制器中。可能是个好主意,也可能不是,这取决于应用程序的其他部分,但这是需要考虑的

<% foreach (var item in Model) { %>
    <tr>
        <td>
            <% if(CONDITION) {
            <%= Html.Encode(item.Title) %>
            <% } else { %>
            &nbsp ;
            <% } %>
        </td>
    </tr>
<% } %>