我已经看到很多关于此的问题,但我从来没有真正得到我需要的答案。
我正在将一个相当大的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*/
}
在使用MVC之前我只使用了一个asp:Repeater
,但由于这是MVC我不能使用ASP.NET控件。
我该如何将这些数据传递给View?我真的没有选择不在这里使用匿名类型。<%#ViewData.Eval()%>
显然不行。
有任何想法吗?
发布于 2018-07-27 08:43:09
如下所示:
from person in personList select new Dictionary<string, string>
{
{ "Name", person.Firstname + " " + person.Lastname },
{ "Id", person.Id.ToString() }
};
然后,n 可以将视图页键入到
ViewPage<IEnumerable<Dictionary<string, string>>>
最后,在视图中迭代列表,如下所示:
<% foreach (Dictionary<string, string> p in (IEnumerable)ViewData.Model)
{ %>
<li> <%=p["Id"] %> - <%= p["Name"] %> </li>
<% } %>
发布于 2018-07-27 08:49:07
考虑显式转换为列表并转换视图数据:
ViewData["QUsers"] = (from u in db.Users select u).ToList();
foreach(Users u in (List<Users>)ViewData["QUsers"]){
/*Print the data here*/
}
你 可以使用以下几种方式传递数据,如上面所示,或者使用TempData传递操作之间的数据。还可以使用ViewData.Model来包含强类型的模型。
ViewPage<User>
https://stackoverflow.com/questions/-100000430
复制相似问题