none
Create con Partial View RRS feed

  • Pregunta

  • buen dia a Todos,

    Tengo un detalle espero me puedan ayudar, tengo una vista create creada desde MVC por el controlador la cual si un valor es verdero carga un partial view el cual lo estoy haciendo con @{ Html.RenderAction("Action", "Tabla"); } el detalle que tengo con esto, es al momento de dar de alta, como son dos tablas diferentes y son maestro detalle como le hago para primero insertar el maestro sin perderla informacion del detalle para poder posterioirmente insertarlo, una de las opciones que tengo es hacerlo por java script pero me gustaria seguir utilizando MVC, se podria hacer creando una action en el controller 

    lunes, 22 de mayo de 2017 9:24

Todas las respuestas

  • hola

    Vas a tener que realizar todo en una misma operacion, en el submit enviarias el mastro y el detalle de una unica vez

    el @Html.BeginForm() va a tener que abarcar el mastrro y el detalle tambien, en el submit una clase model va a tener que mapear con los datos de toda la entidad para recibir los datos y que puede hacer la magia el model binding

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    lunes, 22 de mayo de 2017 11:08
  • buen dia Leandro,

     para esto necesito crear otro metodo en mi controlador del maestro, el cual reciva  que tipo de parametro,, por el momento lo que tengo   es la vista Create  que se  crea cuando creas el controlador, posterior cree un partial view del detalle el cual cargo en la pagina create el maesto  por  medio de @PartialResul esto esta dentro den @HTML.beginForm(),  posterioir a esto que me comentas de mapear los campos y devolverlos tendras aungunos link de referencias


    lunes, 22 de mayo de 2017 18:37
  • Que tal amigo, ummm al parecer lo que necesitas es empezar con transacciones, umm no tengo un link pero si pones tus modelos podriamos ayudarte te paso  el metodo que uso para guardar el maestro detalle, pero necesitariamos tus modelos.

    espero te sirva

     public static RespuestaModel SaveNewOferta(NewOfertaView view, string UserName)
            {
                using (var Transaccion = db.Database.BeginTransaction())
                {
                    try
                    {
                        var User = Utilities.ObtenerUsuario(UserName);
    
                        var Oferta = new MaestroOferta
                        {
                            Partida = (view.Partida != null) ? (view.Partida) : 0,
                            FechaCaptura = Utilities.FechaServidor(),
                            UsuarioId = User,
                            LicitacionId = view.LicitacionId,
                            MaestroProveedorId = view.MaestroProveedorId,
                            Gpo = view.Gpo,
                            Gen = view.Gen,
                            Esp = view.Esp,
                            Dif = view.Dif,
                            Var = view.Var,
                            PrecioOfertado = view.PrecioOfertado,
                            MaximoOfertado = Convert.ToInt32(view.MaxOfer),
                            MinimoOfertado = Convert.ToInt32(view.MinOfer),
                            Descuento = view.Descuento,
                        };
    
                        db.MaestroOfertas.Add(Oferta);
                        db.SaveChanges();
    
                        var DetailsTemp = db.DetalleOfertasTemp.Where(odt => odt.UsuarioId == User);
    
                        foreach (var Details in DetailsTemp)
                        {
                            var Marcasdet = new DetalleOferta
                            {
                                MaestroOfertaId = Oferta.MaestroOfertaId,
                                //CLASE=Details.Clase,
                                OficioExime = Details.OficioExime,
                                TramiteInclusion = Details.TramiteInclusion,
                                Marca = Details.Marca,
                                RegistroSanitario = Details.RegistroSanitario,
                                TitularRegistro = Details.TitularRegistro,
                                RfcTitular = Details.RfcTitular,
                                Origen = Details.Origen,
                                Fabricante = Details.Fabricante,
                                RfcFabricante = Details.RfcFabricante,
                            };
    
                            db.DetalleOFertas.Add(Marcasdet);
                            db.DetalleOfertasTemp.Remove(Details);
                        }
                        db.SaveChanges();
                        Transaccion.Commit();
                        return new RespuestaModel { respuesta = true, };
    
                    }
                    catch (System.Data.Entity.Validation.DbEntityValidationException dbEx)
                    {
                        Exception raise = dbEx;
                        foreach (var validationErrors in dbEx.EntityValidationErrors)
                        {
                            foreach (var validationError in validationErrors.ValidationErrors)
                            {
                                string message = string.Format("{0}:{1}",
                                    validationErrors.Entry.Entity.ToString(),
                                    validationError.ErrorMessage);
    
                                raise = new InvalidOperationException(message, raise);
                            }
                        }
                        return new RespuestaModel { respuesta = false, error = raise.Message };
                    }
                }
            }

    Cualquier Duda  nos comentas.


    Horacio Xochitemol Bautista

    lunes, 22 de mayo de 2017 21:58
  • @model DentalCare.Pacientes
    
    @{
        ViewBag.Title = "Create";
    }
    
    <h2>Create</h2>
    
    
    @using (Html.BeginForm()) 
    {
        @Html.AntiForgeryToken()
        
        <div class="form-horizontal">
            <h4>Pacientes</h4>
            <hr />
            @Html.ValidationSummary(true, "", new { @class = "text-danger" })
            <div class="form-group">
                @Html.LabelFor(model => model.ClinicaID, htmlAttributes: new { @class = "control-label col-md-2" })
                <div class="col-md-10">
                    @Html.DropDownList("ClinicaID", null, "Seleccionar..", htmlAttributes: new { @class = "form-control" })
                    @Html.ValidationMessageFor(model => model.ClinicaID, "", new { @class = "text-danger" })
                </div>
            </div>
    
            <div class="form-group">
                @Html.LabelFor(model => model.DentistaID,  htmlAttributes: new { @class = "control-label col-md-2" })
                <div class="col-md-10">
                    @Html.DropDownList("DentistaID", null, "Seleccionar..", htmlAttributes: new { @class = "form-control" })
                    @Html.ValidationMessageFor(model => model.DentistaID, "", new { @class = "text-danger" })
                </div>
            </div>
    
    
                    @{ Html.RenderAction("newTutoresForKid", "Tutores"); }
                    </div>
                <div id="TutorFields">
                </div>
            </div>
    
            <div class="form-group">
                <div class="col-md-offset-2 col-md-10">
                    <input type="submit" value="Create" class="btn btn-default" />
                </div>
            </div>
        </div>
    }
    
    <div>
        @Html.ActionLink("Back to List", "Index")
    </div>
    
    @section Scripts {
        @Scripts.Render("~/bundles/jqueryval")
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
    <script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
    
    <script src="~/Scripts/Pacientes-js.js"></script>
    
    
    
    
    
    }
    
     esta parte es la vista create del maestro posterior la edad es mejnor  a 15 carcar un detalle "tutor" con @{ Html.RenderAction("newTutoresForKid", "Tutores"); } pero al momento de guardar pues marca error
    miércoles, 24 de mayo de 2017 4:13