none
Evitar que se borren los datos de un DropDownList RRS feed

  • Pregunta

  • Hola, buen día!

    Soy nuevo en esto, ya que apenas estoy empezando a utlilizar ASP.NET MVC. Estoy haciendo algo sencillo, cargo información en un DropDownList que tengo en mi vista desde mi clase controlador, luego por medio de un submit la guardo en una base de datos que tengo en SQL. Mi problema es que al terminar de guardar los datos se refresca la página, por lo tanto no se ejecuta el ActionResult donde obtiene los datos el DropDownList y pone un error donde dice que no puede cargar los datos porque son nulos. Cómo puedo evitar que se refresque la página?

    Gracias de antemano...


    JK

    viernes, 29 de mayo de 2020 22:13

Respuestas

  • > Cómo puedo evitar que se refresque la página?

    Puedes evitarlo usando Ajax para transmitir los datos, en lugar de hacer un Submit. En MVC tienes algunos automatismos para facilitar esto, por ejemplo, puedes usar un @Ajax.BeginForm en lugar del @Html.BeginForm. Si vas a hacer esto, asegúrate de leer la documentación porque no son perfectamente equivalentes las dos instrucciones, hay que hacer más cosas si vas a usar el @Ajax.BeginForm.

    Pero normalmente no es así como se resuelve el problema de que se borra el DropDownList al guardar los datos. Lo que se hace es que en el método de acción que guarda los datos, antes de hacer el "return View(modelo)", primero se cargan en el ViewBag los datos del DropDownList. Para ello, se extrae dicha carga a una subrutina común, y llamas a esa subrutina desde los dos sitios (el método que ahora mismo tienes para presentar la página por primera vez y también el método que la vuelve a presentar después de grabar).

    • Marcado como respuesta JuanK1916 lunes, 1 de junio de 2020 15:40
    sábado, 30 de mayo de 2020 6:46

Todas las respuestas

  • > Cómo puedo evitar que se refresque la página?

    Puedes evitarlo usando Ajax para transmitir los datos, en lugar de hacer un Submit. En MVC tienes algunos automatismos para facilitar esto, por ejemplo, puedes usar un @Ajax.BeginForm en lugar del @Html.BeginForm. Si vas a hacer esto, asegúrate de leer la documentación porque no son perfectamente equivalentes las dos instrucciones, hay que hacer más cosas si vas a usar el @Ajax.BeginForm.

    Pero normalmente no es así como se resuelve el problema de que se borra el DropDownList al guardar los datos. Lo que se hace es que en el método de acción que guarda los datos, antes de hacer el "return View(modelo)", primero se cargan en el ViewBag los datos del DropDownList. Para ello, se extrae dicha carga a una subrutina común, y llamas a esa subrutina desde los dos sitios (el método que ahora mismo tienes para presentar la página por primera vez y también el método que la vuelve a presentar después de grabar).

    • Marcado como respuesta JuanK1916 lunes, 1 de junio de 2020 15:40
    sábado, 30 de mayo de 2020 6:46
  • Muchas gracias, eso era lo que me faltaba, llamar al método donde presentaba la página por primera vez para que volviera a cargar los datos.

    JK

    lunes, 1 de junio de 2020 15:40