Печать данных на экран на основе запроса в ASP.NET MVC? - PullRequest
0 голосов
/ 21 сентября 2009

У меня есть приложение, над которым я работаю, где я хочу просмотреть некоторые данные, где флаг в данных установлен в 1 или 2, и распечатать его на экране.

Идея, над которой я работаю, взята из одного из руководств MVC:

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

Но я хочу сделать то же самое, но с помощью оператора LINQ, чтобы получить необходимые данные.

Как мне это сделать?

Я начал с подобной копии более или менее приведенного выше кода, который, как я знаю, не сработает, но я просто смотрел, что он сделал с моими данными.

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

Ответы [ 3 ]

1 голос
/ 21 сентября 2009

Я не уверен, что это хорошая идея. Ваше представление должно быть как можно более «легким», и оно станет довольно тяжелым, если вы начнете помещать в него запросы Linq.

Лучшим подходом является получение данных в вашем методе контроллера с использованием запроса Linq, который извлекает указанные данные из объекта репозитория. Посмотрите учебники NerdDinner для получения дополнительной информации об этом.

В любом случае, как указывает Jao, вы можете передать IQueryable представлению, и итерация по нему выглядит в основном так же, как и у IEnumerable. Так что, если все, что вы делаете, это перечисление по коллекции, это выглядит довольно чисто.

0 голосов
/ 21 сентября 2009

Ваш вид не должен содержать запрос вообще. Ваша модель должна быть уже заполнена тем, что нужно показать. Ваш оригинал foreach был верным. Обычно я вызываю запрос в своем слое доступа к данным из моего контроллера и заполняю модель результатами. Например:

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

0 голосов
/ 21 сентября 2009

Вы можете добавить предложение where:

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

Но, на мой взгляд, это относится к модели (или контроллеру).

...