asp.net mvc - net - Cómo mostrar una lista usando ViewBag
viewbag razor (7)
En su opinión, debe volver a convertirlo en el tipo original. Sin el elenco, es sólo un objeto.
<td>@((ViewBag.data as ICollection<Person>).First().FirstName)</td>
ViewBag es un tipo dinámico C # 4. Las entidades devueltas también son dinámicas a menos que sean lanzadas. Sin embargo, los métodos de extensión como .First () y todos los otros Linq no funcionan con la dinámica .
Editar - para abordar el comentario:
Si desea mostrar la lista completa, es tan simple como esto:
<ul>
@foreach (var person in ViewBag.data)
{
<li>@person.FirstName</li>
}
</ul>
Los métodos de extensión como .First () no funcionarán, pero esto funcionará.
Hola, necesito mostrar una lista de datos usando viewbag.pero no puedo hacerlo.
Por favor, ayúdame..
Intenté esto:
ICollection<Learner> list = new HobbyHomeService().FetchLearner();
ICollection<Person> personlist = new HobbyHomeService().FetchPerson(list);
ViewBag.data = personlist;
y vista interior:
<td>@ViewBag.data.First().FirstName</td>
Pero esto no muestra el valor y da un error que dice "Model.Person no contiene una defibición para First ()"
Esto es lo que hice y funcionó ...
DO#
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];
..............
..............
}
Para ponerlo todo junto, este es el aspecto que debe tener:
En el controlador:
List<Fund> fundList = db.Funds.ToList();
ViewBag.Funds = fundList;
Luego en la vista:
@foreach (var item in ViewBag.Funds)
{
<span> @item.FundName </span>
}
Solo pon un
List<Person>
en el ViewBag y en la Vista, devuélvalo a la Lista
Tuve el mismo problema y busco y busco ... pero no obtuve ningún resultado.
Así que puse mi cerebro en exceso de unidad. y se me ocurrió la siguiente solución. prueba esto en la página de visualización
al principio de la página agregue este código
@{
var Lst = ViewBag.data as IEnumerable<MyProject.Models.Person>;
}
para mostrar el atributo particular use el siguiente código
@Lst.FirstOrDefault().FirstName
En su caso utilice el código siguiente.
<td>@Lst.FirstOrDefault().FirstName </td>
Espero que esto ayude...
simplemente utilizando los datos de Viewbag como IEnumerable <> lista
@{
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>
//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>
}