none
LLENAR DOS TABLAS DE MI BASE DE DATOS DESDE UNA SOLA VISTA EN ASP.NET MVC RRS feed

  • Pregunta

  • Buenas comunidad! saludos :)

    Estoy desarrollando un proyecto en el cual tengo una vista con campos de una tabla de mi base de datos y con campos de otra tabla de mi base de datos. Tengo 2 botones (uno para almacenar primero los datos de la tabla1 y otro para almacenar los datos de la tabla2) ya que se necesitan datos de la tabla1 para completar la tabla2. Todo esto desde una ventana modal. En mi controlador de la tabla1 tengo mis ActionResult de Crear, Editar, Eliminar e Index; y todo esto lo hace perfectamente cuando se trata de guardar los datos de tabla1.

    No encuentro la forma para:

    1. Llenar la tabla1 sin que se cierre esa modal (ya que la ocupo aun para llenar los datos de la tabla2) Ó, quiero especificamente que al darle ACEPTAR (que es el boton 1) pueda guardarme esos datos en la tabla1 pero sin cerrar la modal.

    2. Antes de guardarme esos datos en la tabla1 al hacer clic en ACEPTAR, pueda validar que he seleccionado un elemento de un DropDownList que tengo. (Cabe mencionar que esto ya lo tengo validado y funciona, pero el problema radica que se me cierra la modal sin darme tiempo de llenar los datos para la tabla2)

    3. Llenar la tabla2 con el Id exactamente del dato que acabo de ingresar de la tabla1 al haber hecho clic en ACEPTAR, esto mediante un botón llamado GUARDAR.

    4. No se si hacerlo todo en el mismo controlador? o si necesito enlazar dos controladores? pero si lo necesito en la misma vista.

    Realmente me gustaria encontar alguna forma en la cual pueda realizar este proceso. Gracias por la ayuda.

    sábado, 31 de marzo de 2018 1:29

Todas las respuestas

  • Si el modal se cierra, ¿por qué no quitar la llamada a dialog close (si es jQuery UI Dialog)?  Pero bueno, yo no tengo idea de cómo está programando usted esta vista, así que no puedo darle mucho consejo.  Si muestra código, le podemos ayudar mejor.

    IMPORTANTE:  Cuando postee código en este sitio, utilice el botón con el símbolo <> en el editor para que aparezca con formato.


    Jose R. MCP
    Code Samples

    sábado, 31 de marzo de 2018 1:38
  • Lo que veo a la luz de la pregunta es que no has llegado a comprender bien como funciona MVC, y te has limitado a utilizar los automatismos de Visual Studio que te generan un controlador por cada tabla, que solo tiene métodos para grabar los contenidos de una tabla. No tiene por qué ser así.

    Puedes generar un nuevo controlador con los métodos de acción que te sean necesarios, sin que tengan por qué corresponderse con ninguna tabla en particular. En los parámetros de un método de acción, puedes poner los nombres de variables que quieras, y al hacer un Post a ese método se rellenarán las variables con los input que haya en pantalla con el mismo nombre. Pueden provenir de una tabla o de varias, o incluso pueden ser datos sueltos que no se correspondan con ninguna tabla. Si tienes varios campos que forman parte de una misma clase (que puede o no formar parte de los Modelos), entonces puedes poner en el controlador una variable de esa clase y sus propiedades se rellenarán a partir de los input que transmitas en el Post. Esto te permite poner dos clases distintas en los argumentos del método de acción (que pueden o no corresponderse con dos tablas del Modelo), o puedes poner sus campos individualmente.

    Dentro del método de acción, tomas esos valores y escribes el código que los grabe en las tablas. Ese código puede primero grabar en una tabla, después enviar una sentencia que lea el último ID (si es un Identity en sql server puedes hacer un "select scope_Identity()"), y después lo use para grabar en la segunda tabla.

    Todos esos campos que hemos dicho que envías desde la vista son campos de tipo "input". Si los ubicas dentro de un <form> y en el target de ese Form pones la dirección del método de acción, y pones también un Submit dentro del form, pues entonces al pulsar ese submit se enviarán los campos y llegarán a tu método de acción. Esa operación no tiene por qué cerrar ningún modal, y desde luego dentro de ese Form podrías meter datos de dos o más tablas (o incluso datos que no pertenezcan a ninguna tabla) y todos ellos te llegarán como argumentos al método de acción.

    sábado, 31 de marzo de 2018 7:29