2009-10-09 9 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> 
<% }%> 
관련 문제