none
El elemento ViewData con la clave xx es de tipo 'System.String' pero debe ser de tipo 'IEnumerable<SelectListItem> RRS feed

  • Pregunta

  • Amigos queria ver si me puden ayudar estoy haciendo un sistema en asp.net 5, con vs2015

    Uso el identity para la administracion de los usuarios, de lo que me da por defecto al crear un proyecto hice unos ajustes en el controlador account

    en el metodo register aumente lo siguiente

     public ActionResult Register()
            {
                ViewBag.Rol = new SelectList(context.Roles.ToList(), "Name", "Name");
                return View();
            

    En el Post esto

     public async Task<ActionResult> Register(RegisterViewModel model)
            {
                if (ModelState.IsValid)
                {
                    var user = new ApplicationUser { UserName = model.UserName, Email = model.Email ,Name=model.Name,Rol=model.Rol};
                    var result = await UserManager.CreateAsync(user, model.Password);
                    if (result.Succeeded)
                    {
                        //Assign el rol al ususario
                        await this.UserManager.AddToRoleAsync(user.Id, model.Rol);
                        
    
                        await SignInManager.SignInAsync(user, isPersistent:false, rememberBrowser:false);
    
                        return RedirectToAction("Index", "Home");
                    }
                    AddErrors(result);
                }
    
                // Si llegamos a este punto, es que se ha producido un error y volvemos a mostrar el formulario
                return View(model);
            }

    La idea es que al crear un usuario muesre un listado con los roles creados para asi seleccionar en que rol se le asigna al usuario

    En la vista aumente este codigo

    <!--seleccinamos el tipo de rol para el usuario-->
        <div class="form-group">
            @Html.Label("Seleccione el rol del usuario", new { @class = "col-md-2 control-label" })
            <div class="col-md-10">
                @*@Html.DropDownList("Rol")*@
                @Html.DropDownList("Rol", (SelectList)ViewBag.Rol)
            </div>
        </div>
        <!--fin lista roles-->

    En el modelo RegisterViewModel aumente esto

     [Display(Name = "Rol")]
            public string Rol { get; set; }

    Ahora en mi computadora de desarrollo funciona todo bien, pero al montar en un servidor con win2012 y iis8.5

    Al ejecutar la aplicacion, me muestra bien la pantalla para insertar los datos

    Pero al pulsar sobre grabar me sale este mensaje

    

    La linea 53 esta documentada, antes probe con eso pero igual me da el error al crear en el servidor de pruebas

    Lo raro es que porque me da este mensaje si ya me sale todo bien al mostrar la pagina de crear y cuando graba lo que hago es que envie a la pagina home

    Espero puedan ayudarme

    Saludos


    • Editado Fsigu viernes, 16 de septiembre de 2016 21:16 falto e modelo
    viernes, 16 de septiembre de 2016 21:12

Todas las respuestas

  • hola

    si usas un viewmodel para la view porque no declaras

    @Html.DropDownListFor(m=> m.Rol, (SelectList)ViewBag.Rol)

    de esta forma indicas que propiedad del model usas para asignar al combo el valor

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    martes, 20 de septiembre de 2016 2:53
  • Saludos, amigo tengo el mismo problema actualmente, lograste encontrar la solucion? En caso de tenerla podrias por favor orientarme....
    domingo, 11 de junio de 2017 15:58