如何删除MVC中的表列?

时间:2009-10-09 19:02:07

标签: c# .net asp.net html asp.net-mvc

我希望有两列并根据条件包含或删除第三列。使用所有if语句似乎有点多余。还有另一种方法吗?

<table style="width: 60%;">
                <tr>
                    <th>Name</th>
                    <th>Age</th>
                    <th>Other</th>
                </tr>
                <tr>
                    <td><%= Model.Name.ToString().Trim()</td>
                    <td><%= Model.Age.ToString().Trim()</td>
                    <td><%= Model.Other.ToString().Trim()</td>
                </tr>

                <tr>
                    <td><%= Model.Name2.ToString().Trim()</td>
                    <td><%= Model.Age2.ToString().Trim()</td>
                    <td><%= Model.Other2.ToString().Trim()</td>
                </tr>

                <tr>
                    <td><%= Model.Name3.ToString().Trim()</td>
                    <td><%= Model.Age3.ToString().Trim()</td>
                    <td><%= Model.Other3.ToString().Trim()</td>
                </tr>
            </table>

2 个答案:

答案 0 :(得分:1)

如果你想禁止在列中显示值,那么Ternary条件运算符(?:)会使事情看起来更好一些。

<%= Model.MyValue == somevalue ? "": Model.MyValue.ToString() %>

但是如果你想删除整个列,而不是禁止显示值,那么if语句就完全可以了。

<tr>
    <td><%= Model.Name.ToString().Trim() %></td>
    <td><%= Model.Age.ToString().Trim() %></td>
    <% if (myCondition) { %>
        <td><%= Model.Other.ToString().Trim() %></td>
    <% } %>
</tr>

顺便说一句,从您的代码示例中可以看出,您需要一个循环。您也可以从一些Html编码中受益。像这样:

<% foreach (Person item in Model) { %>
    <tr>
        <td><%= Html.Encode(item.Name) %></td>
        <td><%= Html.Encode(item.Age) %></td>
        <% if (myCondition) { %>
            <td><%= Html.Encode(item.Other) %></td>
        <% } %>
    </tr>
<% } %>

答案 1 :(得分:0)

如果您正在使用表格,则隐藏显示其他值的列:

<% for(......){
    //evaluate here if you will show it or not?
    var showOther = Age > 18 ? "block":"none";
%>
<tr><td>..</td><td>..</td><td display="<%= showOther  %>">..</td></tr>
<% }%>