LINQ匿名类型+ MVC视图

imp*_*law 6 linq asp.net-mvc viewdata anonymous-types

我已经看到很多关于此的问题,但我从来没有真正得到我需要的答案.

我正在将一个相当大的Web应用程序从Web Forms转换为MVC,过了一段时间我就把数据传递给视图了.在Action中我执行代码:

//This is just an example ViewData["QProducts"] = from p in db.Products select new{Name = p.Name, Date = p.ToShortDateString() } ViewData["QUsers"] = from u in db.Users select u;

我使用foreach循环迭代html中的对象,如下所示:

foreach(var q in (IEnumerable)ViewData["QEvents"])
{ 
    /*Print the data here*/
}
Run Code Online (Sandbox Code Playgroud)

在使用MVC之前我只使用了一个asp:Repeater,但由于这是MVC我不能使用ASP.NET控件.

我该如何将这些数据传递给View?我真的没有选择不在这里使用匿名类型.<%#ViewData.Eval()%>显然不行.

有任何想法吗?

Mik*_*ott 15

而不是匿名类型,创建一个类型来保存名称和日期:

public class NameDate
{
  public string Name { get; set; }
  public DateTime Date { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

然后在Linq查询中使用它:

from p in db.Products select new NameDate { Name = p.Name, Date = p.Date }
Run Code Online (Sandbox Code Playgroud)

强烈键入您的视图MyView<IEnumerable<NameDate>>,然后执行操作foreach ( var nameDate in ViewData.Model )...