none
Llenar un Dropdownlist desde la base de datos y enviar a la vista pero no como modelo RRS feed

  • Pregunta

  • Buenas tardes, veran me encuentro desarrolando una app web asp con MVC y necesito crear una sede, pero esta necesita ir relacionada con la casa matrix, por lo que ocupo enviar a la vista un listado de todas las casas matrices existentes en la BD.

    Se que puedo enviar desde el controlador una lista como modelo, pero asi no me sirve ya que en el modelo necesito valla la clase o el modelo de las sedes.

    De antemano muchas gracias.


    Walberto Tapia SAyas

    sábado, 18 de julio de 2020 19:02

Respuestas

  • Se que puedo enviar desde el controlador una lista como modelo, pero asi no me sirve ya que en el modelo necesito valla la clase o el modelo de las sedes.

    No, eso no es cierto. El modelo puede ser una clase cualquiera, y en esa clase puedes meter todo lo que quieras, incluyendo otras clases, por lo que puedes meter dentro todos los contenidos que quieras mostrar en la vista, solo es cuestión de anidar más clases dentro de la clase usada como modelo.

    Sin embargo, dicho eso, en la práctica lo que se suele hacer cuando hay que enviar datos para un DropDown es meterlos en el ViewBag. Desde el controlador se hace:

    ViewBag.ElNombreQueQuieras = listaDeDatos;

    y desde la vista puedes acceder a esos datos usando ViewBag.ElNombreQueQuieras.

    • Marcado como respuesta wtapia domingo, 19 de julio de 2020 1:15
    sábado, 18 de julio de 2020 20:15
  • hola

    Desde el controlador podrias enviar los datos que liste el combo por medio del ViewBag

    Bind DropDownList Using ViewBag In ASP.NET MVC

    solo reemplazarias la lista del articulo por los datos que recuperes del SELECT

    Populate (Bind) DropDownList from ViewBag in ASP.Net MVC

    en este otro se realiza la carga usando una consulta a la db

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta wtapia domingo, 19 de julio de 2020 1:14
    sábado, 18 de julio de 2020 22:44

Todas las respuestas

  • Se que puedo enviar desde el controlador una lista como modelo, pero asi no me sirve ya que en el modelo necesito valla la clase o el modelo de las sedes.

    No, eso no es cierto. El modelo puede ser una clase cualquiera, y en esa clase puedes meter todo lo que quieras, incluyendo otras clases, por lo que puedes meter dentro todos los contenidos que quieras mostrar en la vista, solo es cuestión de anidar más clases dentro de la clase usada como modelo.

    Sin embargo, dicho eso, en la práctica lo que se suele hacer cuando hay que enviar datos para un DropDown es meterlos en el ViewBag. Desde el controlador se hace:

    ViewBag.ElNombreQueQuieras = listaDeDatos;

    y desde la vista puedes acceder a esos datos usando ViewBag.ElNombreQueQuieras.

    • Marcado como respuesta wtapia domingo, 19 de julio de 2020 1:15
    sábado, 18 de julio de 2020 20:15
  • hola

    Desde el controlador podrias enviar los datos que liste el combo por medio del ViewBag

    Bind DropDownList Using ViewBag In ASP.NET MVC

    solo reemplazarias la lista del articulo por los datos que recuperes del SELECT

    Populate (Bind) DropDownList from ViewBag in ASP.Net MVC

    en este otro se realiza la carga usando una consulta a la db

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta wtapia domingo, 19 de julio de 2020 1:14
    sábado, 18 de julio de 2020 22:44
  • Muchas gracias. El ejemplo me sirvió para ver como tomaba ese listado en la vista y lo relacionaba con el dropdownlist.

    Walberto Tapia SAyas

    domingo, 19 de julio de 2020 1:15
  • Hola Alberto muchas gracias por tomarte la molestia de responder.

    De acuerdo a lo que me comentas aprovecho y te pregunto:

    Se que a la vista puedo enviar cualquier obejot de clases propias de C# o de cualquiera de las clases del modelo que componen mi proyecto, pero pregunta puedo enviar mas de un modelo?

    Gracias de Antemano ehhh!!!


    Walberto Tapia SAyas

    domingo, 19 de julio de 2020 1:17
  •  puedo enviar mas de un modelo?

    Si quieres ser estricto y riguroso en la aplicación del patrón MVC, entonces no tiene sentido esa pregunta. "Modelo" significa en este contexto "el conjunto de toda la información que pasamos del controlador a la vista". Desde ese punto de vista, el modelo tiene que ser único, es decir, estamos pasando un único conjunto de información del C a la V. Otra cosa es que dicho conjunto en su interior pueda tener tantas cosas como sean necesarias. Si defines una clase como Modelo para la vista (la M de MVC), esa clase por dentro puede tener todas las propiedades que sean necesarias, incluyendo clases completas, que podrían ser clases del Modelo de Datos. Es decir, el Modelo de la vista puede contener dentro varios Modelos de datos. Espero que tengas clara la diferencia entre el Modelo de la Vista y el Modelo de Datos, son dos cosas distintas aunque en algunos tutoriales para principiantes se confundan las dos cosas y utilicen un modelo de datos directamente como modelo de la vista. Resumiendo: solo se puede pasar un único modelo de la vista, pero en su interior puede contener múltiples modelos de datos. Acostúmbrate a hacer la distinción entre los dos modelos; en aplicaciones sencillas y triviales pueden ser intercambiables, pero en cuanto tu aplicación empiece a complicarse un poco necesitarás definir modelos para la vista que sean diferentes de los modelos de datos.
    domingo, 19 de julio de 2020 7:21
  • Hola wtapia, 

    Gracias por confirmar que se ha encontrado una solución a la consulta realizadaDebido a elloeste hilo será cerrado. 

    Si es necesario, por favor abra un nuevo hilo. 

    Cualquier duda referente a productos Microsoft, puedes consultarnos. Es un gusto informarte. 

    Gracias por usar los foros de MSDN. 

     

    Eric Ruiz

    ____________________________ 

      

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde.  

    Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft.   

    Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft. 

    lunes, 20 de julio de 2020 14:52
    Moderador