use*_*646 24 model-view-controller asp.net-mvc viewbag asp.net-mvc-3
嗨,我需要使用viewbag显示数据列表.但我无法做到这一点.
请帮帮我..
我试过这件事:
ICollection<Learner> list = new HobbyHomeService().FetchLearner();
ICollection<Person> personlist = new HobbyHomeService().FetchPerson(list);
ViewBag.data = personlist;
Run Code Online (Sandbox Code Playgroud)
和内部视图:
<td>@ViewBag.data.First().FirstName</td>
Run Code Online (Sandbox Code Playgroud)
但这并没有显示该值,并给出错误说"Model.Person不包含First()的解除"
Len*_*ncy 57
在您的视图中,您必须将其强制转换为原始类型.没有演员表,它只是一个对象.
<td>@((ViewBag.data as ICollection<Person>).First().FirstName)</td>
Run Code Online (Sandbox Code Playgroud)
ViewBag是C#4动态类型.除非投射,否则从中返回的实体也是动态的.但是,像.First()和所有其他Linq那样的扩展方法不适用于动态.
编辑 - 解决评论:
如果要显示整个列表,它就像这样简单:
<ul>
@foreach (var person in ViewBag.data)
{
<li>@person.FirstName</li>
}
</ul>
Run Code Online (Sandbox Code Playgroud)
像.First()这样的扩展方法不起作用,但是会这样.
小智 5
综上所述,它应该是这样的:
在控制器中:
List<Fund> fundList = db.Funds.ToList();
ViewBag.Funds = fundList;
Run Code Online (Sandbox Code Playgroud)
然后在视图中:
@foreach (var item in ViewBag.Funds)
{
<span> @item.FundName </span>
}
Run Code Online (Sandbox Code Playgroud)
只需将Viewbag数据用作IEnumerable <>列表
@{
var getlist= ViewBag.Listdata as IEnumerable<myproject.models.listmodel>;
foreach (var item in getlist){ //using foreach
<span>item .name</span>
}
}
//---------or just write name inside the getlist
<span>getlist[0].name</span>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
146780 次 |
| 最近记录: |