usar net mvc como asp asp.net-mvc asp.net-mvc-3 model-view-controller viewbag

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> }