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 )...