2009-10-09 62 views
0

我想要兩列,並根據條件,包括或刪除第三個。使用所有if語句似乎有點多餘。有沒有另一種方法來做到這一點?如何刪除MVC中的表格列?

<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> 

回答

1

即三元條件運算符(:)使事情變得更好看一點,如果你想抑制值顯示在一列。

<%= 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> 
<% } %> 
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> 
<% }%>