asp.net-mvc - 如何使用 ViewBag 显示列表

标签 asp.net-mvc asp.net-mvc-3 model-view-controller viewbag

嗨,我需要使用 viewbag 显示数据列表。但我无法做到。
请帮我..
我试过这个东西:

 ICollection<Learner> list = new HobbyHomeService().FetchLearner();
 ICollection<Person> personlist = new HobbyHomeService().FetchPerson(list);
 ViewBag.data = personlist;

和内部 View :
 <td>@ViewBag.data.First().FirstName</td>

但这并没有显示值并给出错误提示“Model.Person 不包含 First() 的定义”

最佳答案

在您看来,您必须将其转换回原始类型。没有类型转换,它只是一个对象。

<td>@((ViewBag.data as ICollection<Person>).First().FirstName)</td>

ViewBag 是 C# 4 动态类型。除非强制转换,否则从它返回的实体也是动态的。但是,像 .First() 这样的扩展方法和所有其他 Linq 方法 do not work with dynamics .

编辑 - 解决评论:

如果要显示整个列表,就这么简单:
<ul>
    @foreach (var person in ViewBag.data)
    {
        <li>@person.FirstName</li>
    }
</ul>

像 .First() 这样的扩展方法不起作用,但这会起作用。

关于asp.net-mvc - 如何使用 ViewBag 显示列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10521831/

相关文章:

reactjs - 在 Heroku 上部署时找不到模块错误

ASP.Net 数据库播种

android - MVVM 的 RoboBinding 与 Android 绑定(bind)

javascript - 将 AngularJS 对象值从 ng-repeat 传递到 AngularJS 函数

javascript - 将 ID 从所选项目传递到 Controller

c# - Visual Studio 2015 在 Text Visualizer 上截断长字符串

asp.net-mvc - 如何在 asp.net mvc 4 中实现社交登录?

asp.net-mvc - 如何将 .net MVC4 应用程序设置为使用 azure 存储而不是 sql server

asp.net - 一个存储库应该调用另一个存储库吗?或者存储库应该调用服务层吗?

asp.net - MVC3 Action 作为一个简单的 Web 服务