首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >LINQ匿名类型+ MVC视图?

LINQ匿名类型+ MVC视图?
EN

Stack Overflow用户
提问于 2018-07-26 23:45:16
回答 2查看 0关注 0票数 0

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

我正在将一个相当大的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中的对象,如下所示:

代码语言:javascript
复制
foreach(var q in (IEnumerable)ViewData["QEvents"])
{ 
    /*Print the data here*/
}

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

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

有任何想法吗?

EN

回答 2

Stack Overflow用户

发布于 2018-07-27 08:43:09

如下所示:

代码语言:txt
复制
from person in personList select new Dictionary<string, string>
{ 
    { "Name", person.Firstname + " " + person.Lastname },
    { "Id", person.Id.ToString() }
};

然后,n 可以将视图页键入到

代码语言:txt
复制
ViewPage<IEnumerable<Dictionary<string, string>>>

最后,在视图中迭代列表,如下所示:

代码语言:txt
复制
<% foreach (Dictionary<string, string> p in (IEnumerable)ViewData.Model) 
{ %>
   <li> <%=p["Id"] %> - <%= p["Name"] %> </li>
<% } %>
票数 0
EN

Stack Overflow用户

发布于 2018-07-27 08:49:07

考虑显式转换为列表并转换视图数据:

代码语言:txt
复制
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来包含强类型的模型。

代码语言:txt
复制
ViewPage<User>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100000430

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档