2010-06-10 4 views
4

ASP.Net MVC에서 단일 foreach 루프에 다음 코드를 압축하는 방법이 있습니까? , 나는 아마 각 행을 작성하는 확장 방법을 사용할 수 있습니다 알고MVC의 단일 foreach 루프에서 가로 테이블을 만들려면 어떻게해야합니까?

Name  | Bob |  Sam | Bill |  Steve | 
Company | Builder | Fireman |  MS |  Apple | 

:이 것 출력이 표는 다음과 같이

public class SomeObject 
{ 
    public virtual Name {get;set;} 
    public virtual Company {get;set;} 
} 

:

이 모델은 IEnumerable<SomeObject>
<table class="table"> 
    <tr> 
     <td> 
      Name 
     </td>  
     <% 
     foreach (var item in Model) 
     { 
     %> 
      <td> 
       <%= item.Name %> 
      </td> 
     <% 
     } 
     %> 
    </tr> 
    <tr> 
     <td> 
      Item 
     </td>  
     <% 
     foreach (var item in Model) 
     { 
     %> 
      <td> 
       <%= item.Company %> 
      </td> 
     <% 
     } 
     %> 
    </tr> 
</table> 

인 경우 그러나 모델을 통해 단일 반복을 사용하여 모든 행을 작성할 수 있습니까?

다음은이 question입니다. 나는 받아 들인 대답에 만족하지 않으며 최선의 해결책을 제공했다고 믿을 수 없습니다.

+0

하지만 :) – Salil

+0

당신이 테이블 이외의 다른 구조를 사용하여 생각 해 봤나 주어진 condition.good 질문 단일 루프에서 가능하지? 이 경우 나에게 이해가되지 않습니다. IE6과 7을 제외하고, CSS'display : table-cell/table-row'는 대안으로 살펴볼 가치가 있습니다. 그래서 어떤 테이블 인 테이블도 : – Ahmad

답변

0

가, 다음이 당신을 위해 작동합니다.

<table class="table"> 
    <tr> 
     <th> 
      Name<br/> 
      Item<br/> 
     </th>  
     <% 
     foreach (var item in Model) 
     { 
     %> 
      <td> 
        <%= Html.Encode(item.Name) %><br/> 
        <%= Html.Encode(item.company) %><br/> 
      </td> 
     <% 
     } 
     %> 
    </tr> 
</table> 

스팬 및 CSS 스타일을 사용하여 확실히 향상시킬 수 있습니다.

+0

테이블 행에 표 머리글을 넣는 것이 합법적입니까? 어쨌든, 아마 어쨌든 td를 설정할 수 있습니다. 아주 좋은 예입니다. 어쨌든 테이블 내의 테이블보다 더 멋 있어야합니다! – GenericTypeTea

+0

@GeneticTypeTea, 확실히 작동합니다. IE8과 Firefox 모두에서 테스트되었습니다. 테이블 내의 테이블 에 대한 몇 가지 이점은 다음과 같습니다. 1) 대역폭 감소. 2) CSS로 스타일을 더 쉽게 지정할 수 있습니다. – Syd

0

확인 다음 매트 그것은 당신에게

<table class="table"> 
    <tr> 
     <td> 
      <table> 
       <tr><td>Name</td></tr> 
       <tr><td>Item</td></tr> 
      <table> 
     </td>  
     <% 
     foreach (var item in Model) 
     { 
     %> 
      <td> 
       <table> 
        <tr><td><%= item.Name %></td></tr> 
        <tr><td><%= item.company %></td></tr> 
       <table> 
      </td> 
     <% 
     } 
     %> 
    </tr> 
</table> 

참고 도움 : - 당신은 순수 테이블을 사용하여 제한하지 않는 경우

No check though :) 
+0

Heh, 똑똑. 나는 그것을 좋아하지 만, 나는 그것을 좋아하기 때문에 더러워진다. 나는 테이블에 대한 나의 대답을 더 좋아할 것이라고 생각한다.> 테이블 솔루션에서, 그러나 똑똑한 생각! – GenericTypeTea

+0

@GenericTypeTea : - 예! 나는 그게 더럽다는 것에 동의한다. 나는 또한 테이블> 테이블 솔루션에서 2 루프를 신경 쓰지 않는다. 그러나 그것은 단지 4 기록입니다. 치어 리더의 – Salil

0

아주 오래된 스레드,하지만 ...

(나는이 질문을 가로 질러 왔을 때하지만 더 나은 방법을 찾고 있었다) 나는 다음과 같은 사용했습니다

이 객체를 통해 루프 코드 블록 만들기 변수의 각 행에 대한 HTML을 만든 다음 변수를 출력합니다.

플러스는 한 번만 반복되므로 중첩 테이블이 없으므로 (일이 더 많이 나열 될 수 있음) 마이너스는 html의 문자열 조작입니다.

문자열보다는 stringbuilder를 사용해야하지만 원칙은 동일해야합니다. 그것은 AFAIK

@code 
     Dim tr1 As String = "<th>Name</th>" 
     Dim tr2 As String = "<th>Company</th>" 

     For Each thingy As object In Model 

      tr1 += "<th>" & thingy.Name & "</th>" 
      tr2 += "<th>" & thingy.Company & "</th>" 

     Next 



     End Code 

     @<table class="table table-condensed"> 
      <tr>@Html.Raw(tr1)</tr> 
      <tr>@Html.Raw(tr2)</tr> 
     </table> 
관련 문제