none
Almacenar estado desde JQuery RRS feed

  • Pregunta

  • Hola estoy haciendo un programa que presenta en pantalla un conjunto de coches de una seria de forma que al elegir una marca aparecen automáticamente los modelos disponible de esa marca (mediante $.Ajax) y al pulsar sobre un modelo nos lleva a una pantalla que describe el modelo completo y dicha pantalla contiene un botón de retorno para la pantalla anterior y lo que yo pretendo es que al pulsar sobre dicho botón retorne a la pantalla anterior con la marca elegida y los modelos presentados, y los problemas que me encuentro son:

    1) si hago history.back() vuelve a la pantalla y en el combo de selección aparece la marca pero no los modelos.

    2) parece necesario pasar de nuevo por el controlador para repintar la pantalla con el modelo ya seleccionado per eso implica los siguientes problemas:

         - dado que el combo de selección de marca se resuelve desde JQuery necesito poder mantener el estado de la marca elegida con algo como ViewBag o ViewState para que el valor pueda ser utilizado desde el botón de retorno para pasar el valor al controlador.

         - no veo que JQuery tenga la capacidad de almacenar el valor dado que no reconoce algo como @ViewBag.Marca = valor; 

    Se os ocurre como puedo almacenar el valor de la marca de forma que dicho retorno le permita al usuario elegir un modelo de la misma marca sin tener que acceder de nuevo al combo de selección de marcas.

    gracias

    viernes, 22 de julio de 2016 17:53

Todas las respuestas

  • fjjcent,

    Queda claro que el valor -independientemente del mecanismo que uses- debe mantenerse entre vistas. En lo personal, hago uso de las APIS de storage de HTML5 para persistir valores, me explico:

    Toda vez que selecciones un elemento en el desplegable guardas el ID con LocalStorage.setItem(), una vez en la vista donde describes el modelo debes envíar el valor almacenado LocalStorage.getItem() al método de acción que invoca a la vista anterior. Queda claro que el método debe esperar un parámetro (puede ser opcional) que servirá como argumento del parámetro selectedValue de la clase SelectList (al crear la instancia de la misma).

    public ActionResult Index (int idMarcaSel)
    {
           <...>
           ViewBag.Marca = new SelectList(<...>, "ID", "Marca", idMarcaSel);
    }


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    viernes, 22 de julio de 2016 18:44
  • hola

    >>al pulsar sobre un modelo nos lleva a una pantalla que describe el modelo completo

    no te conviene abrir la edicion en una ventana popup? digo de esta forma no tendrias que navegar y perder los datos de la pantalla previa

    puede ser un popup de javascrip con el window.open() o podrias ser el de jquery UI Dialog

    >>dado que el combo de selección de marca se resuelve desde JQuery necesito poder mantener el estado de la marca elegida con algo como ViewBag o ViewState

    mm no vas a poder usar estos porque son objetos del lado del servidor y tu estas trabajando con jquery del lado del cliente

    sino hay un post al servidor cuando navegas podrias conservar los datos del combo si lo asignas el storage de html5

    entonces si en el sotorage tienes datos los cargas desde alli, sino realizas un pedido al action en el servidor

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    viernes, 22 de julio de 2016 19:27