Как отобразить результат запроса Linq to Entity в представлении ASP.NET MVC - PullRequest
1 голос
/ 29 апреля 2009

У меня есть выражение запроса сущности Link 2 в моем приложении ASP.NET MVC:

Dim var = From c In context.Evaluation_Template _
          From ae In context.Assigned_Evaluation _
          Join ua In context.User_Assignment On ae.Assignment_ID Equals ua.Assignment_ID _
          Select c.Evaluation_Name, ae.Due_Date, ua.Is_Started, ua.Is_Completed, ua.Is_Approved

Я хочу передать это в представление и отобразить результаты.

Я пытался

Return View(var)

Но я не уверен, как перебрать результаты.

Я новичок в .NET в целом, поэтому любая помощь будет принята с благодарностью.

Ответы [ 2 ]

1 голос
/ 30 апреля 2009

Если вы хотите, чтобы объекты со строгим шрифтом использовались в вашем представлении, вам нужно перейти в свое представление и изменить верхнюю часть с ... \

<%@ Page Language="VB" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage" %>

до

<%@ Page Language="VB" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage(Of IEnumerable(Of String))" %>

Конечно, заменив Of String на тип вашей модели, который вы хотите передать. Чтобы передать свою коллекцию, вы должны использовать ...

Return View(query.ToList())

... при условии, что запрос был своего рода запросом IQueryable из ADO.NET EF.

Тогда, на ваш взгляд, вы можете перебирать результаты, переданные в.

    <%  For Each s As String In Model
        %><%=s%><%
    Next%>

Это выведет каждую строку в коллекции, переданную в модель данных представления.

Несмотря на то, что я рекомендую для лучших практик создать тип специально для передачи в ваши представления, он же ViewData.

0 голосов
/ 29 апреля 2009

Сначала похоже, что ваш запрос не совсем понятен. Я не уверен насчет VB.NET, но в этом случае вам понадобится отдельный класс, потому что вы выбираете что-то, что не соответствует вашей модели Entity Framework.

Dim var = From c In context.Evaluation_Template
          .Include("Assigned_Evaluation")
          .Include("User_Assignment")
          Select c

Это третий eidt, я продолжаю публиковать его :) То, что ваша страница просмотра должна принять это:

IEnumerable<Evaluation_Template>

Это делается либо путем создания строго типизированного представления, либо путем установки его в директиве page на странице просмотра. Вы также можете делать то, что вы пытаетесь (меньше накладных расходов), но тогда вам понадобится отдельный класс для отправки на страницу просмотра.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...