如何在Razor中访问IQueryable?

时间:2012-04-04 20:39:14

标签: asp.net-mvc-3 razor iqueryable

我正在构建MVC3“代码优先”应用程序并在我的页面上显示数据我正在使用以下内容:
控制器代码:

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

答案 0 :(得分: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更改为select new MyViewModel,那么您就会有一个强类型的视图模型(以及dynamicvar)。