您好我需要使用viewbag显示数据列表。但我无法做到这一点 请帮我.. 我试过这件事:
ICollection<Learner> list = new HobbyHomeService().FetchLearner();
ICollection<Person> personlist = new HobbyHomeService().FetchPerson(list);
ViewBag.data = personlist;
和内部视图:
<td>@ViewBag.data.First().FirstName</td>
但这并未显示该值,并提供错误说“Model.Person不包含First()的解除”
答案 0 :(得分:53)
在您的视图中,您必须将其强制转换为原始类型。没有演员阵容,它只是一个对象。
<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()这样的扩展方法不起作用,但这样会。
答案 1 :(得分:5)
总而言之,这应该是它的样子:
在控制器中:
List<Fund> fundList = db.Funds.ToList();
ViewBag.Funds = fundList;
然后在视图中:
@foreach (var item in ViewBag.Funds)
{
<span> @item.FundName </span>
}
答案 2 :(得分:5)
简单地将Viewbag数据用作IEnumerable&lt;&gt;列表
@{
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>
答案 3 :(得分:3)
我有同样的问题,我搜索和搜索..但没有结果。
所以我把我的大脑放在了驱动器上。我提出了以下解决方案。
在View Page
在页面的头部添加此代码
@{
var Lst = ViewBag.data as IEnumerable<MyProject.Models.Person>;
}
显示特定属性使用以下代码
@Lst.FirstOrDefault().FirstName
在您的情况下使用以下代码。
<td>@Lst.FirstOrDefault().FirstName </td>
希望这会有所帮助......
答案 4 :(得分:2)
使用as变量将Viewbag数据强制转换为所需的视图类。
@{
IEnumerable<WebApplication1.Models.Person> personlist = ViewBag.data as
IEnumerable<WebApplication1.Models.Person>;
// You may need to write WebApplication.Models.Person where WebApplication.Models is
the namespace name where the Person class is defined. It is required so that view
can know about the class Person.
}
在视图中写下
<td>
@(personlist.FirstOrDefault().Name)
</td>
答案 5 :(得分:1)
刚刚放一个
List<Person>
进入ViewBag并在View中将其强制转换为List
答案 6 :(得分:1)
这就是我所做的,它的确有效......
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];
..............
..............
}
答案 7 :(得分:0)
//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>
}
答案 8 :(得分:0)
我有一个问题,我想使用我的ViewBag通过RenderPartial作为对象发送元素列表,为此,您必须先进行转换,我必须在控制器和也查看。
在控制器中:
ViewBag.visitList = (List<CLIENTES_VIP_DB.VISITAS.VISITA>)
visitaRepo.ObtenerLista().Where(m => m.Id_Contacto == id).ToList()
在视图中:
List<CLIENTES_VIP_DB.VISITAS.VISITA> VisitaList = (List<CLIENTES_VIP_DB.VISITAS.VISITA>)ViewBag.visitList ;