2012-04-04 85 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