嗨,我需要使用viewbag.but我不能够做到这一点,以显示数据的列表。
请帮我..
我想这件事情:
ICollection<Learner> list = new HobbyHomeService().FetchLearner();
ICollection<Person> personlist = new HobbyHomeService().FetchPerson(list);
ViewBag.data = personlist;
并且里面的观点:
<td>@ViewBag.data.First().FirstName</td>
但是,这并不表明在价值,并给出错误说“Model.Person亘古不包含首先一个defibition()”
在你看来,你必须将它转换回原来的类型。 如果不投,它只是一个对象。
<td>@((ViewBag.data as ICollection<Person>).First().FirstName)</td>
ViewBag是C#4动态类型。 从它返回实体也是动态的,除非施法。 然而,扩展方法一样。首先()和所有其他的LINQ那些不与动态工作 。
编辑 - 解决意见:
如果你想显示整个列表,它是这么简单:
<ul>
@foreach (var person in ViewBag.data)
{
<li>@person.FirstName</li>
}
</ul>
扩展方法。首先像()将无法正常工作,但这会。
简单地使用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>
为了把它放在一起,这是它应该是什么样子:
在控制器:
List<Fund> fundList = db.Funds.ToList();
ViewBag.Funds = fundList;
然后在视图:
@foreach (var item in ViewBag.Funds)
{
<span> @item.FundName </span>
}
我有同样的问题,我搜索和搜索..但没有得到结果。
所以我把我的大脑超过驱动器。 我想出了以下的解决方案。 试试这个在查看页面
在页面的头部添加以下代码
@{
var Lst = ViewBag.data as IEnumerable<MyProject.Models.Person>;
}
以显示特定属性中使用下面的代码
@Lst.FirstOrDefault().FirstName
你的情况使用下面的代码。
<td>@Lst.FirstOrDefault().FirstName </td>
希望这可以帮助...
这是我做过什么和它的工作...
C#
ViewBag.DisplaylList = listData;
JavaScript的
var dispalyList= @Html.Raw(Json.Encode(this.ViewBag.DisplaylList));
for(var i=0;i<dispalyList.length; i++){
var row = dispalyList[i];
..............
..............
}
//controller You can use this way
public ActionResult Index()
{
List<Fund> fundList = db.Funds.ToList();
ViewBag.Funds = fundList;
return View();
}
<--View ; You can use this way html-->
@foreach (var item in (List<Fund>)ViewBag.Funds)
{
<p>@item.firtname</p>
}