我正在构建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>
我知道使用动态并不是最好的方法。 如何使用强类型视图实现相同的功能? 谢谢
答案 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
,那么您就会有一个强类型的视图模型(以及dynamic
到var
)。