如何在ASP.NET MVC视图中显示Linq to Entity查询结果

时间:2009-04-29 19:47:05

标签: asp.net-mvc entity-framework linq-to-entities

我的ASP.NET MVC应用程序中有一个Link 2 Entity查询表达式:

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 个答案:

答案 0 :(得分:1)

如果您希望在视图中使用强类型对象,则需要进入视图并更改顶部... \

<%@ 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))" %>

当然,将String替换为您要传入的模型类型。要传递您的收藏,您将使用...

Return View(query.ToList())

...假设查询是来自ADO.NET EF的某种IQueryable查询。

然后在您的视图中,您可以迭代传入的结果。

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

这会输出传递给视图数据模型的集合中的每个字符串。

虽然我建议您选择最佳实践来创建专门用于传递视图的类型,即ViewData。

答案 1 :(得分:0)

首先看起来你的查询搞砸了一点点。我不确定VB.NET,但在这种情况下你需要一个单独的类,因为你选择的东西不是你的Entity Framework模型。

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

这是第三个eidt,我一直在发帖:)你的视图页面需要采取的是:

IEnumerable<Evaluation_Template>

您可以通过生成强类型视图或在视图页面的页面指令中设置它来执行此操作。你也可以做你想要的(减少开销),但是你需要一个单独的类发送到视图页面。