2012-04-04 84 views
0

我建立MVC3「代碼第一」的應用程序,以顯示我用下面的我的頁面上的數據:
控制器代碼:如何訪問Razor中的IQueryable?

public ViewResult Index() 
{ 
dynamic assignedT = from t in db.AssignedTasks 

join a in db.Approvers on t.ApproverID equals a.ID 
join r in db.Requestors on t.RequestorID equals r.ID 
select new {Approver =a.FirstName + " " +a.LastName, 
Requestor=r.FirstName + " " + r.LastName, 
Title = t.Title, 
t.RequestedDate, 
t.CompletedDate, t.Description, 
Status =(int)t.InternalStatut 
    }; 

return View(assignedT); 
    } 

,並在頁面上:

@{ 
    ViewBag.Title = "Index"; 
} 
<h2>Index</h2> 
<table> 
    @foreach (var item in Model) {  
<tr> 
    <td>@item.GetType().GetProperty("Title").GetValue(item, null) 
    </td> 
    </tr> 
    } 
</table> 

我知道使用動態不是最好的方法。 如何使用強類型視圖實現相同的功能? 謝謝

回答

1

可以定義下面的類:

public class MyViewModel 
{ 
    string Approver { get; set; } 
    string Requestor { get; set; } 
    string Title { get; set; } 
    DateTime RequestedDate { get; set; } 
    DateTime CompletedDate { get; set; } 
    string Description { get; set; } 
    int Status { get; set; } 
} 

如果然後在您的LINQ查詢select new MyViewModel改變select new那麼你有一個強類型的視圖模型(和dynamicvar)。

+0

我嘗試使用列表 assignedT = ...但得到強制異常。謝謝 – Yuri 2012-04-04 21:16:51

+0

謝謝@model System.Data.Entity.Infrastructure.DbQuery 解決了問題!!! – Yuri 2012-04-04 23:28:12