2009-04-29 152 views
1

我在我的ASP.NET MVC應用的鏈接2實體查詢表達式顯示LINQ到實體查詢結果:如何在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一般所以任何幫助將不勝感激。

回答

0

首先它看起來像你的查詢是搞砸了一點點。我不確定VB.NET,但是在這種情況下你需要一個單獨的類,因爲你選擇的不是你的實體框架模型。

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

這是第三eidt,我一直張貼:)你的視圖頁面,然後需採取的是:

IEnumerable<Evaluation_Template> 

你要麼通過生成一個強類型的視圖或設置它這樣做查看頁面的頁面指令。你也可以做你正在嘗試的東西(少開銷),但是你需要一個單獨的類來發送到視圖頁面。

+0

感謝您的幫助。你認爲你可以發佈如何遍歷結果的示例代碼? – CoolGravatar 2009-04-29 20:05:09

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

當然用您想要通過的模型類型替換字符串。要通過您的收藏,您可以使用...

Return View(query.ToList()) 

...假設查詢是某種來自ADO.NET EF的IQueryable查詢。

然後在您的視圖中,您可以通過傳遞的結果進行迭代。

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

這將輸出傳遞到視圖的數據模型集合中的每個字符串。

雖然我建議最佳做法來創建一個專門用於傳入視圖的類型,即ViewData。