2009-09-21 1 views
0

나는 데이터의 플래그가 1 또는 2로 설정되고 화면에 인쇄되는 일부 데이터를 루프하려는 곳에서 작업하는 응용 프로그램이 있습니다.ASP.NET MVC에서 쿼리를 기반으로 화면에 데이터를 인쇄 하시겠습니까?

내가 사용하고 있어요 생각은 MVC 자습서 중 하나입니다 :

<ul> 
<% For Each m As Movie In ViewData.Model%> 
    <li><%= m.Title %></li> 
<% Next%> 
</ul> 

하지만 위의하지만 필요한 데이터를 잡기 위해 LINQ 문을 사용하는 것과 비슷하고 싶어.

어떻게하면됩니까?

나는 위의 코드와 비슷한 코드로 시작했는데 트릭을하지는 않지만 내 데이터로 무엇을했는지 보았습니다.

<% For Each Ticket As hdCall in ViewData.Model.Where(m => m.IsUpcoming==true) %> 

을하지만 내 생각에이 모델 (또는 컨트롤러)에 속하는 :

<table cellpadding="0" cellspacing="0" width="643"> 
     <% For Each Ticket As hdCall In ViewData.Model%> 
      <tr> 
       <td width="54" class="ticketList">&nbsp;</td> 
       <td width="182" class="ticketList"><%=Ticket.Title%></td> 
       <td width="88" class="ticketList"></td> 
       <td width="148" class="ticketList"></td> 
       <td width="58" class="ticketList"></td> 
       <td width="115" class="ticketList"></td> 
      </tr> 
     <% Next%> 
</table> 

답변

0

보기에 검색어가 전혀 포함되지 않아야합니다. 모델에는 이미 표시해야하는 항목이 있어야합니다. 원본 foreach이 맞습니다. 일반적으로 컨트롤러에서 내 데이터 액세스 계층의 쿼리를 호출하고 결과로 모델을 채 웁니다. 예를 들어 내가 컨트롤러에 그것을 할 수 있다면

this.Model = _ticketRepository.FindAllUpcoming(); return View();

0

당신은 where 절을 추가 할 수 있습니다.

+0

는 어떻게 화면으로 루프 결과를 인쇄하는 방법에 대한 갈 것이라고? – LiamGu

+0

그 경우 루프는 여전히 원래의 질문과 동일합니다. – jao

1

나는 이것이 좋은 생각인지 모르겠다. 당신의 관점은 가능한 한 "빛"이어야하며, Linq 질의를하기 시작하면 꽤 무거워지기 시작할 것입니다.

더 나은 방법은 리포지토리 개체에서 데이터를 검색하는 Linq 쿼리를 사용하여 컨트롤러 메서드에서 데이터를 가져 오는 것입니다. 자세한 내용은 NerdDinner 자습서를 확인하십시오.

어쨌든 Jao가 지적했듯이 IQueryable을보기에 전달할 수 있으며 반복되는 반복은 기본적으로 IEnumerable과 같습니다. 따라서 컬렉션 전체를 열거하는 것이 모두 깨끗한 것처럼 보입니다.