none
Devolver ID del Registro Guardado (AJAX - MVC5 - ASP.NET) RRS feed

  • Pregunta

  • Hola,

    Tengo un formulario que se envía por Ajax y se almacena correctamente en la base de Datos. ¿Cómo puedo hacer que al momento de guardar, este me devuelva el ID de ese registro que acaba de almacenar?, ya que en otra parte del documento tengo otro formulario que necesita ese ID para editar los campos de ese mismo registro.

    Metodo para Guardar (Controlador)

     public JsonResult GuardarPropuesta(KaizenViewModel model)
            {
                var estado = false;
                if (ModelState.IsValid)
                {
                    using (var bd = new Modelo())
                    {
                        FormPropuesta TempPropuesta = new FormPropuesta
                        {
                            CorreoUsuario = model.FormPropuesta.CorreoUsuario,
                            Nombre = model.FormPropuesta.Nombre,
                            FechaPropuesta = DateTime.Now,
                            Area = model.FormPropuesta.Area,
                            Aporta = model.FormPropuesta.Aporta,
                            SituacionInicial = model.FormPropuesta.SituacionInicial,
                            Que = model.FormPropuesta.Que,
                            QuienPropone = model.FormPropuesta.QuienPropone,
                            QuienBeneficia = model.FormPropuesta.QuienBeneficia,
                            Como = model.FormPropuesta.Como,
                            Cuando = model.FormPropuesta.Cuando,
                            FechaFinal = DateTime.Now,
                            FechaInicio = DateTime.Now,
                            Donde = model.FormPropuesta.Donde,
                            InversionInicial = model.FormPropuesta.InversionInicial,
                            IndicadorClave = model.FormPropuesta.IndicadorClave,
                            FechaImplementacion = DateTime.Now,
                            FechaEvaluacion = DateTime.Now,
                            Estado = FormPropuesta.estado.Revision,
                            BenCualitativo = 0,
                            BenCuantitativo = 0,
                            NivelEsfuerzo = 0,
                            Originalidad = 0,
                            PosibilidadReplicar = 0,
                            Promedio = 0,
                            Puntaje = 0,
                            Observaciones = ""
                        };
                        db.FormPropuesta.Add(TempPropuesta);
                        db.SaveChanges();
                    }
                    estado = true;
                    var result = new { respuesta = estado };
                    return Json(result);
                }
                else
                {
                    var result = new { respuesta = estado };
                    return Json(result);
                }
            }
    Ajax (Vista)

    $(document).ready(function () {
            $("#ContOcultar").show();
            $("#AlertShow").hide();
            $("#ContenedorAlerta").hide();
            $("#FormPropuesta").validate({
                submitHandler: function GuardarPropuesta(){
                    var url = "@Url.Action("GuardarPropuesta", "FormPropuestas")";
                    var data = $("#FormPropuesta");
                    $.ajax({
                        type: 'POST',
                        url: url,
                        dataType: 'json',
                        data: data.serialize(),
                        beforeSend: function () {
                            $("#loader").toggleClass("loader");},
                        success: function (result) {
                            AbrirModalNuevaPropuesta();
                            if (result.respuesta == true) {
                                swal({
                                    type: 'success',
                                    title: '¡Propuesta creada correctamente!',
                                    timer: 3000
                                })
                            }
                            else if (result.respuesta == false) {
                                swal({
                                    type: 'error',
                                    title: '¡Propuesta no se ha guardada!',
                                    timer: 3000
                                })
                            }
                            $("#ContenedorAlerta").show();
                            //$("#ContOcultar").hide();
    
                        },
                        complete: function () {
                            $("#loader").removeClass("loader");
                        },
                    });
                }
            });
        });

    Me dieron una ayuda de que a través del db.SaveChanges(), este me devuelve el ID de ese registro pero no he podido lograrlo.

    ¿Me ayudan por favor?

    lunes, 27 de agosto de 2018 22:45

Respuestas

  • Me dieron una ayuda de que a través del db.SaveChanges(), este me devuelve el ID de ese registro pero no he podido lograrlo.

    No, no eso no es del todo exacto. El db.SaveChanges no te devuelve el ID. Lo que hace es que almacena el ID dentro de cada uno de los objetos que se salvaron al hacer el SaveChanges. En tu caso, recibirías el valor dentro de TempPropuesta.ID. Desde luego, esto solo funciona si el modelo de entidades está bien configurado para ello, es decir, tiene que declarar el ID dentro de la entidad como "database generated". Esto es automático si usas database-first, pero si has escrito un code-first tienes que ponerlo tú en el modelo.
    • Propuesto como respuesta Jorge TurradoMVP martes, 28 de agosto de 2018 7:08
    • Marcado como respuesta MateoM9 martes, 28 de agosto de 2018 13:04
    martes, 28 de agosto de 2018 6:20