none
Cargar DropDownList RRS feed

  • Pregunta

  • Hola

    Estoy trabajando con ASP.NET MVC 5, ¿Como puedo cargar un DropDownList?

    Al cargar el DropDownList el método que lo carga debería ir en algún evento algo parecido al Load?

    Controller

    public ActionResult Listar()
            {
                var proveedor = SdProveedor.ListaTipoDocumentoIdentidad();
                ViewBag.ListaProveedores = new SelectList(proveedor, "Id", "Descripcion");
                return View();
            }

    Este método necesito llamarlo en la vista Create, me imagino que es en el GET del Create

     // GET: Proveedor/Create
            public ActionResult Create()
            {
                var model = new ProveedorDto();
                return View(model);
            }
    
            // POST: Proveedor/Create
            [HttpPost]
            public ActionResult Create(ProveedorDto entity)
            {
                try
                {
                    if (ModelState.IsValid)
                    {
                        SdProveedor.Create(entity);
                        return RedirectToAction("Index");
                    }
                    else
                        return View(entity);
                }
                catch
                {
                    return View(entity);
                }
            }

    View

    <div class="form-group">
                @Html.LabelFor(model => model.DocumentoIdentidad, htmlAttributes: new { @class = "control-label col-md-2" })
                <div class="col-md-10">
                    @Html.DropDownList("myDropDown", (SelectList)ViewBag.ListaProveedores)
                </div>
            </div>
    Mensaje Error: Me da error: No hay ningún elemento ViewData de tipo IEnumerable<SelectListItem> con la clave myDropDown


    Pedro Ávila
    "El hombre sabio querrá estar siempre con quien sea mejor que él."
    Lima - Perú


    • Editado Pedro Ávila miércoles, 18 de enero de 2017 19:35 ....
    miércoles, 18 de enero de 2017 19:34

Respuestas

  • Hola

    El ViewBag solo vive del controlador a la vista y después ya no, y solo en el action que lo llama, si tu lo defines en el action Listar, solo lo podras utilizar en la vista que retorne ese action, en, en tu caso ambos Create regresan vista pero en ningún punto defines nuevamente la propiedad del Viewbag, deberías agregar también en el create.

    ViewBag.ListaProveedores = new SelectList(proveedor, "Id", "Descripcion");

    Saludos

    • Marcado como respuesta Pedro Ávila jueves, 19 de enero de 2017 1:22
    miércoles, 18 de enero de 2017 19:44

Todas las respuestas

  • Hola

    El ViewBag solo vive del controlador a la vista y después ya no, y solo en el action que lo llama, si tu lo defines en el action Listar, solo lo podras utilizar en la vista que retorne ese action, en, en tu caso ambos Create regresan vista pero en ningún punto defines nuevamente la propiedad del Viewbag, deberías agregar también en el create.

    ViewBag.ListaProveedores = new SelectList(proveedor, "Id", "Descripcion");

    Saludos

    • Marcado como respuesta Pedro Ávila jueves, 19 de enero de 2017 1:22
    miércoles, 18 de enero de 2017 19:44
  • Hola

    Sería en el Create del GET o necesariamente tiene que ser en GET y POST lo implemente en el Get y si funciona.

    Cuando presiono el botón Create me da error el mismo del inicio de mi hilo


    Pedro Ávila
    "El hombre sabio querrá estar siempre con quien sea mejor que él."
    Lima - Perú


    • Editado Pedro Ávila miércoles, 18 de enero de 2017 20:07 ...
    miércoles, 18 de enero de 2017 19:58
  • Pedro Ávila,

    ¿GET o POST?, de antemano en el método de acción GET, pero puedes también incluirlo en el método de acción que responde a POST para los casos en que desees volver a mostrar la vista con los datos cargados, por ejemplo cuando suceda un error en el método de acción.

    Si tienes el objeto ViewBag.ListaProveedores, en la vista bastará con:

    @Html.DropDownList("ListaProveedores")

    Según requieras puedes utilizar las otras sobrecargas del método.


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    miércoles, 18 de enero de 2017 22:36