none
Pasar un ViewData o ViewBag en un JsonResult RRS feed

  • Pregunta

  • Hola a todos, espero que estén bien, ahora estoy trabajando con MVC y Angular, ha funcionado super en un montón de cosas, pero me he topado con este inconveniente que no puedo para los ViewData o ViewBag cuando es de un JsonResult.

    Aquí el código.

        public JsonResult AgregarAlCarro(int id_producto)
            {
    
                Models.CarroModel carro = new Models.CarroModel();
                carro.AgregarCarroDeCompra(id_producto);
                System.Web.Script.Serialization.JavaScriptSerializer serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
                ViewData["CantCarro"] = serializer.Serialize(((List<Models.CarroModel>)Session["Carro"]).Count);
    
                return Json(new { success = true, carro = ((List<Models.CarroModel>)Session["Carro"]) });
    
            }

    Por favor ayuda y antemano muchas gracias .

    Saludos.

    jueves, 22 de diciembre de 2016 17:00

Respuestas

  • hola

    es que si usas angular no debes usar ningun ViewData o ViewBag, se supone que los datos los debes tener en variables en javascript en el controller o service de angular

    y pasa los datos por medio del $http al action del controller, pero lo pasas como json

    si estas usando ViewData o ViewBag desde el cliente entonces algo lo estas diseñando de forma incorrecta

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta Ricardo_1984 martes, 10 de enero de 2017 5:59
    jueves, 22 de diciembre de 2016 18:30

Todas las respuestas

  • Hola Ricardo_1984

    cómo estás recuperando ese ViewData en tu Vista?

    Intenta así :

    var str = @Html.Raw(Json.Encode(ViewData["CantCarro"]));

    Saludos

     

    Javier

    jueves, 22 de diciembre de 2016 17:23
  • Hola, se me olvido poner la parte de la vista sorry, la tengo así

       <i class="fa fa-shopping-cart"></i>  <span class="label label-warning"> @Html.Raw(Json.Encode(ViewData["CantCarro"])) </span>

    aun asi me arroja null

    jueves, 22 de diciembre de 2016 18:02
  • Hola

    Lo que entiendo es que tu ViewData["CantCarro"] lo seteas cuando mandas a llamar AgregarAlCarro?, y supongo que esa llamada la haces con jquery?, el ViewBag y el ViewData son textos que se muestran en el html, como tu html ya estaba y en el momento de mostrarse no tenían valor es null, si necesitas regrescas el valor para mostrarlo en pantalla no uses ViewData, regresa el valor en JSON y lo muestras.

    Saludos

    jueves, 22 de diciembre de 2016 18:19
  • hola

    es que si usas angular no debes usar ningun ViewData o ViewBag, se supone que los datos los debes tener en variables en javascript en el controller o service de angular

    y pasa los datos por medio del $http al action del controller, pero lo pasas como json

    si estas usando ViewData o ViewBag desde el cliente entonces algo lo estas diseñando de forma incorrecta

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta Ricardo_1984 martes, 10 de enero de 2017 5:59
    jueves, 22 de diciembre de 2016 18:30