none
Error al insertar con un DropDownListFor - No hay ningún elemento ViewData de tipo 'IEnumerable<SelectListItem> RRS feed

  • Pregunta

  • ERROR: System.InvalidOperationException: 'No hay ningún elemento ViewData de tipo 'IEnumerable<SelectListItem>' con la clave 'IdProveedor'.'

    Hola!!!

    Como verán, estoy haciendo un formulario de INSERT con un combo que llama a un select de la tabla de proveedores y categorias. El actionresulta de HTTGET me funciona correctamente, cuando lleno los campos en el formulario y le doy clic a GUARDAR me salta el error que muestro en la segunda imagen.

    Mi código en el HTTPPOST es como sigue:

    Cuando hago el Get, las listas se ven llenas. Cuando doy clic en Guardar, las listas se ven en null tal como muestro en la segunda imagen. Alguien me podría ayudar a identificar dónde podría estar mi problema? Gracias.

            [HttpPost]
            [ValidateAntiForgeryToken]
            public ActionResult Crear(Producto p)
            {
                try
                {
                    if (ModelState.IsValid)
                    {
    
                        ViewBag.ListaProveedores = new SelectList(prov.GetAll(), "Id", "Nombre", "Nombre");
                        ViewBag.ListaCategorias = new SelectList(cate.GetAll(), "Id", "Nombre", "Nombre");
    
    
                        if (_business.Insert(p)>0)
                        {
                            ViewBag.Message = "Product Details Added Successfully";
                            ModelState.Clear();
                        }
                    }
                    return View();
                }
                catch (Exception ex)
                {
                    ModelState.AddModelError("", "Error al registrar el producto - " + ex.Message);
                    return View();
                }
            }

    martes, 22 de agosto de 2017 22:19

Todas las respuestas

  • hola

    validaste si el codigo pasa el

    if (ModelState.IsValid)

    quizas no pasa este if y llega al return de la view sin cargar las listas, que pasa si usas

    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Crear(Producto p)
    {
    	try
    	{
    		if (ModelState.IsValid)
    		{
    			if (_business.Insert(p)>0)
    			{
    				ViewBag.Message = "Product Details Added Successfully";
    				ModelState.Clear();
    			}
    		}
    		
    		         ViewBag.ListaProveedores = new SelectList(prov.GetAll(), "Id", "Nombre", "Nombre");
    		ViewBag.ListaCategorias = new SelectList(cate.GetAll(), "Id", "Nombre", "Nombre");
    	
    		return View(p);
    	}
    	catch (Exception ex)
    	{
    		ModelState.AddModelError("", "Error al registrar el producto - " + ex.Message);
    		return View();
    	}
    }

    ademas tienes que enviar un model a la view

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina




    miércoles, 23 de agosto de 2017 6:27