none
Guardar ID de un dropdownlist en cascada en la Base de Datos RRS feed

  • Pregunta

  • Buenas Tardes a todos.

    Espero alguien me pueda ayudar en este asunto que llevo un par de días intentando resolver sin éxito. El caso que tengo es el siguiente:

    Tengo 3 dropdownlist que los lleno en cascada, al selecccionar el primero se carga el segundo ,esto invoca al segundo dropdownlist y al seleccionar un valor se debería llenar el tercer combo o dropdownlist (en este tema no hay ningun problema). El problema es que el Id del 3er combo debo almacenarlo en la base de datos .  Agradecería mucho que alguien me heche una mano con este tema.

    Cabe recalcar que a  los dropdownlist los lleno utilizando codigo javascript en la vista. Ojalá alguien me pudiese dar un ejemplo con una situación similar.

    miércoles, 19 de septiembre de 2012 21:33

Todas las respuestas

  • Pues soy nuevo en MVC pero yo en lo personal haría que el ajax llenara campos input tipo hidden con los nombres de los parámetros de la acción.  De esta forma el submit() del formulario automáticamente invocará la acción del controlador con los parámetros ya llenos.

    NOTA:  Digo <input type="hidden"> porque en este momento no recuerdo cómo trabaja el <select>.  Tal vez en el <select> puede almacenarse el ID sin problemas.  En fin, ejemplo:

    @using(@Html.BeginForm())
    {
        <fieldset>
            <!-- Aquí los combos a llenar. -->
            <!-- Luego los campos hidden: -->
            <input type="hidden" name="elID" />
        </fieldset>
    }

    El javascript (o jQuery) asignaría el ID a la propiedad value del elemento input tipo hidden.  Luego la acción del controlador deberá tener un parámetro llamado "elID", tal y como se llama el elemento input tipo hidden.


    Jose R. MCP
    Code Samples

    miércoles, 26 de septiembre de 2012 5:18
  • Buenas!

    A nivel de HTTP una select envia el valor value del option seleccionada. Es decir:

    <select name="myCombo">
    <option value="a">Opcion A</option>
    <option value="b">Opcion A</option>
    </select>

    Si el usuario selecciona "Opcion A", se enviará en la petición un parámetro llamado myCombo con valor a. Por lo tanto en el controlador basta con tener un parámetro de tipo string llamado "myCombo". Eso es independiente de si usas javascript o no para rellenar los combos.

    Otra cosa es como envías la info de los combos hacia el controlador... Eso no nos lo dices. Básicamente hay dos maneras de hacerlo: O bien a través de un <form> (ya sea invocando su .submit() en javascript o con un input type="submit") o bien a través de una petición Ajax. De todos modos en ambos casos te debería funcionar (aunque si usas Ajax depende exactamente de como hagas la petición y como envies los datos hacia el controlador: si usar serialize() de jQuery te debería funcionar, si lo conviertes a json pues dependerá de como sea este json).

    Saludos!


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

    miércoles, 26 de septiembre de 2012 8:48