none
Guardar datos de una vista en SQL Server RRS feed

  • Pregunta

  • Buenas noches compañeros, espero me puedan orientar en este tema, tengo una aplicación en MVC5, lo que hago es cargar datos de una tabla en una vista pero quiero dejar un campo para que se agregue información adicional y posteriormente guardar esa info en otra tabla

    Controller:

        public ActionResult View(int ID)
        {
            using (dbcontext db = new dbcontext())
            {
                return View(db.TableName.Where(x => x.id == ID).ToList().AsEnumerable());
            }
        }

    Model:

        public string Dato1{ get; set; }
        public string Dato2{ get; set; }
        public string Dato3{ get; set; }
        public double Dato4{ get; set; }

    View:

    @model IEnumerable<MVCProject.Models.TableName>
    
    @{
        Layout = null;
    }
    
                        <table class="table table-bordered table-striped">
                        <tr>
                            <th>TituloDato1</th>
                            <th>TituloDato2</th>
                            <th>TituloDato3</th>
                            <th>TituloDato4</th>
                        </tr>
                        @foreach (var XYZ in Model)
                        {
                        <tr>
                            <td>@XYZ.Dato1</td>
                            <td>@XYZ.Dato2</td>
                            <td>@XYZ.Dato3</td>
                            <td>@XYZ.Dato4</td>
                            <td>
                                <input type="number" placeholder="CAMPO_NUEVO"/>
                            </td>
                        </tr>
                        }
                    </table>

    De esta manera me muestra los datos que quiero visualizar, ahora lo que necesito saber es como guardar esos datos más el dato nuevo en una nueva tabla.

    Gracias.

    martes, 6 de agosto de 2019 5:31

Respuestas

  • Cuando en el navegador haces un "Submit" sobre el HTML que se generó a partir de la vista, solo se transmiten en dirección al servidor los campos "input". NO se transmite la tabla. Así que no puedes grabarla en base de datos directamente a partir de los datos que se transmiten desde la vista, porque la tabla no va incluida en esos datos.

    Afortunadamente, en el lado servidor tú ya conoces cuál es el contenido de la tabla (dado que la enviaste previamente desde el servidor al navegador), así que siempre puedes reconstruirla de nuevo a partir de la base de datos. Con un bucle puedes ir emparejando cada dato obtenido desde el dbContext con el correspondiente dato que te llegue en el Request.Form, con lo que al final, si escribes cuidadosamente el código, conseguirás tener todos los datos de la tabla junto con los que envió el usuario. Después lo tomas y lo envías a grabar a base de datos.

    Por desgracia, no hay ningún automatismo sencillo que haga todo esto. Lo tendrás que programar a base de escribir líneas y más líneas de código.

    • Marcado como respuesta Jesus159 domingo, 18 de agosto de 2019 23:17
    martes, 6 de agosto de 2019 12:13