tutorial net mvc español asp c# asp.net-mvc model-view-controller

c# - español - ASP.NET MVC: ¿Cómo paso una lista(de una clase en el Modelo) a un repetidor en una Vista?



mvc c# (4)

ASP.NET MVC tiene un par de maneras de pasar datos a su Vista. La principal forma de pasar sus clases de modelo a la Vista es incluirlo en la clase ViewResult devuelta desde su controlador, como se muestra a continuación:

Function List() As ViewResult '' pass other information in the viewdata dictionary ViewData("Title") = "All Items" '' get our item list from the Model classes Dim items = Model.ItemRepository.GetAllItems() '' return as part of result Return View(items) End Function

Luego, desde su vista, puede acceder a esa lista como se muestra a continuación:

<% For Each item In ViewData.Model %> <%=item.Name%> <% End If %>

El otro método de pasar datos es a través del diccionario ViewData como se muestra en la función del controlador anterior. Puede acceder desde dentro de su vista como:

<%=ViewData("Title")%>

Espero que ayude.

¿Cómo hago lo anterior? Empecé a usar MVC y tengo problemas para transmitir datos.

Mi problema específico es hacer con una lista de objetos que tengo en mi Modelo a los que necesito acceder en una Vista e iterar.

Gracias por adelantado.


Digamos que su acción de controlador se ve algo así como

public ActionResult List() { List<string> myList = database.GetListOfStrings(); (...) }

Ahora quiere pasar su lista a la vista, diga "List.aspx". Para ello, haga que la acción devuelva ViewResult (ViewResult es una subclase de ActionResult). Puede usar el método de Vista del Controlador para devolver un ViewResult así:

public ActionResult List() { List<string> myList = database.GetListOfStrings(); (...) return View("List", myList); }

Para poder acceder a la lista de manera fuertemente tipada en su vista, debe derivarse de ViewPage, donde T es el tipo de datos que está ingresando. Por lo tanto, en el caso actual, nuestra vista (en List.aspx. cs) sería algo como esto:

public partial class List : ViewPage<string> { (...) }

Los datos pasados ​​a la vista de esta manera se conocen como "ViewData". Para acceder a los datos, debe ir a través de las propiedades de ViewData.Model en la página de visualización. Por lo tanto, para representar el contenido de la lista que escribiría (en List.aspx)

<ul> <% foreach(var s in this.ViewData.Model){ %> <li> <%= s %> </li> <% } %> </ul>

Aquí, este .ViewData.Model tiene el tipo que especificó el parámetro de tipo T en ViewPage, por lo que en nuestro caso this.ViewData.Model tiene tipo List.

Puede usar un repetidor para renderizar cosas como esta, pero yo no lo recomendaría. Si desea utilizar algo similar, consulte el módulo Cuadrícula del proyecto MvcContrib en CodePlex.


La manera rápida y sucia es pasarlo a través de ViewData

public ActionResult List() { ViewData["MyList"] = new List<string> () {"test1", "test2"}; return View (); }

entonces puedes acceder a él en tu vista

<ul> <% foreach (string item in (List<string>)ViewData["MyList"]) { %> <li><%= item %></li> <% }%> </ul>