none
Error con DropDownList RRS feed

  • Pregunta

  • Muy buenas amigos del foro de MSDN, bueno tengo un pequeño problema con mi dropdownlist, mi problema real no es cargar los datos, dado que eso lo hago de maravilla en mi vista se refleja cargada el dropdownlist, mi problema radica cuando mango a guardar mi registro en la DB, me aparece el siguiente error: "Value cannot be null. Parameter name: items". Bueno les dejo el código con lo que lo haga tanto para la vista como para el controlador.

    Controlador 

    public ActionResult NuevoUsuarioModulo()
            {
                EJEMPLOEntities modelo = new EJEMPLOEntities();


                var u = from x in modelo.Usuarios
                        select x;


                var m = from y in modelo.Modulos
                        select y;


                ViewData["usuario"] = u;
                ViewData["modulo"] = m;


                return View();
            }


            [HttpPost]
            public ActionResult NuevoUsuarioModulo(UsuariModuloModelo um)
            {
                EJEMPLOEntities modelo = new EJEMPLOEntities();
                var id = (from x in modelo.UsuarioModulo
                          select x.id).Max();


                UsuarioModulo UsrMod = new UsuarioModulo
                {
                    id = Convert.ToInt32(id) + 1,
                    id_Modulo = Convert.ToInt32(um.modulo),
                    id_Usuario = Convert.ToInt32(um.usuario)
                };


                modelo.AddToUsuarioModulo(UsrMod);
                return View();
            }

    Vista

     <div class="editor-field">
                    <%: Html.DropDownListFor(model => model.usuario, new SelectList((IEnumerable)ViewData["modulo"], "id_Modulo", "Descripcion"))%>
                    <%: Html.ValidationMessageFor(model => model.usuario) %>
     </div>

    Tengo que mencionar que la vista es fuertemente tipada, la cual es generada a partir de una clase que tengo en el Model, la cual es la siguiente:

    UsuarioModuloModel

    public class UsuariModuloModelo
        {
            [Required(ErrorMessage = "Ingrese el código del usuario")]
            [DisplayName("Usuario")]
            public string usuario { get; set; }


            [Required(ErrorMessage = "Ingrse el código del módulo")]
            [DisplayName("Módulo")]
            public string modulo { get; set; }


            [DisplayName("Estado")]
            public bool estado { get; set; }
        }

    Ademas les dejo la imgen del error:

    martes, 7 de febrero de 2012 4:42

Respuestas

  • Muy Buenas Eduard, bueno ya le encontre solución al problemita, tal parece que al momento de hacer el post la aplicación trata de llenar nuevamente los dropdownlist, pero como en el manejador de la acción de guardar, en la accion del  HttpPost no tenia definido que se mandara a llenar nuevamente los dropdownlist, lo unico que hice fue copiar la sentencia linq y volverla asignar al ViewData, y con eso basto. Pero gracias por contestar.
    • Marcado como respuesta Juan C. Gómez miércoles, 8 de febrero de 2012 0:58
    miércoles, 8 de febrero de 2012 0:58

Todas las respuestas

  • Buenas!

    En la acción ActionResult NuevoUsuarioModulo(UsuariModuloModelo um) antes de devolver la vista, no le estás pasando ViewData (ni usuario, ni modulo) (como sí que haces la primera vez). Supongo que es por eso que te da error...

    Saludos!


    Eduard Tomàs Blog: http://geeks.ms/blogs/etomas -- Twitter: eiximenis

    martes, 7 de febrero de 2012 14:37
  • Muy buenas Eduard

    Bueno si lo que me estas preguntando, es si los valores una vez hecho el post en la vista, es decir cuando hago click en guardar, si los valores llegan al controlador para ser insertados, pues dejame decirte que si, si llegan los valores inclusive los valors que he seleccionado en el dropdownlist, pero repentinamente estalla en justamente en la linea del dropdownlist, y como te dije anteriormente los dropdownlist me cargan de maravilla, el detalle es al momento de guardar es cuando ocurre este error.

    De antemano muchas gracias por tu ayuda.

    martes, 7 de febrero de 2012 19:06
  • Muy Buenas Eduard, bueno ya le encontre solución al problemita, tal parece que al momento de hacer el post la aplicación trata de llenar nuevamente los dropdownlist, pero como en el manejador de la acción de guardar, en la accion del  HttpPost no tenia definido que se mandara a llenar nuevamente los dropdownlist, lo unico que hice fue copiar la sentencia linq y volverla asignar al ViewData, y con eso basto. Pero gracias por contestar.
    • Marcado como respuesta Juan C. Gómez miércoles, 8 de febrero de 2012 0:58
    miércoles, 8 de febrero de 2012 0:58
  • > lo unico que hice fue copiar la sentencia linq y volverla asignar al ViewData

    ;-)

    A eso me refería yo con lo de "antes de devolver la vista, no le estás pasando ViewData" :P

    Saludos!


    Eduard Tomàs Blog: http://geeks.ms/blogs/etomas -- Twitter: eiximenis

    miércoles, 8 de febrero de 2012 7:13