none
Cuando trato de insertar un registro ya sea multiple o solo me da un error asp.net mvc insercion multiple RRS feed

  • Pregunta

  • Esta es la vista del formulario

    @model List<Proyecto_Monlic.Models.MSE>

    @{
        ViewBag.Title = "Create";
    }
    @Html.Partial("_Navegation")

    <div class="col-md-8 col-md-offset-3 ">

        <h2>Create</h2>


        @using (Html.BeginForm())
        {
            @Html.AntiForgeryToken()
            @Html.ValidationSummary(true, "", new { @class = "text-danger" })
            <hr />
            <table class="table">
                <tr class="info">
                    <td>Movimiento</td>
                    <td>Tipo de Movimiento</td>
                    <td>Contacto</td>
                    <td>Precio</td>
                    <td>Cantidad</td>
                    <td>Material</td>
                </tr>
            </table>

            if (Model != null && Model.Count > 0)
            {

                foreach (var i in Model)
                {
                int j = 0;
                <form method="post">
                    <table class="table bg-info" id="tabla">
                        <tr class="fila-fija">
                            <td>
                                @Html.DropDownList("IdMovimiento", null, htmlAttributes: new { @class = "form-control" })
                                @Html.ValidationMessageFor(model => model[j].entrada.IdMovimiento, "", new { @class = "text-danger" })
                            </td>
                            <td>
                                @Html.DropDownList("IdTipoM", null, htmlAttributes: new { @class = "form-control" })
                                @Html.ValidationMessageFor(model => model[j].movimiento.IdTipoM, "", new { @class = "text-danger" })
                            </td>
                            <td>
                                @Html.DropDownList("IdContacto", null, htmlAttributes: new { @class = "form-control" })
                                @Html.ValidationMessageFor(model => model[j].movimiento.IdContacto, "", new { @class = "text-danger" })
                            </td>
                            <td>
                                @Html.EditorFor(model => model[j].Precio, new { htmlAttributes = new { @class = "form-control" } })
                                @Html.ValidationMessageFor(model => model[j].Precio, "", new { @class = "text-danger" })
                            </td>
                            <td>
                                @Html.EditorFor(model => model[j].Cantidad, new { htmlAttributes = new { @class = "form-control" } })
                                @Html.ValidationMessageFor(model => model[j].Cantidad, "", new { @class = "text-danger" })
                            </td>
                            <td>
                                @Html.DropDownList("IdMaterial", null, htmlAttributes: new { @class = "form-control" })
                                @Html.ValidationMessageFor(model => model[j].entrada.IdMaterial, "", new { @class = "text-danger" })
                            </td>






                            <td class="eliminar"><input type="button" value="Menos -" /></td>
                        </tr>
                    </table>
                    <div class="btn-dar">
                        <button id="adicional" name="adicional" type="button" class="btn btn-warning">Mas +</button>
                    </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>
                </form>
                    j++;
                }
            }


            <div>
                @Html.ActionLink("Back to List", "Index")
            </div>


        }
    </div>
    <script src="~/Content/js/datepicker.js"></script>
    @section Scripts {
        @Scripts.Render("~/bundles/jqueryval")
    }

    y este el controlador

    public ActionResult Create()
            {
                List<MSE> ci = new List<MSE> { new MSE { IdMovimiento = 2, IdTipoM = 4, IdContacto = 3, Precio = 1, Cantidad = 10, IdMaterial = 2 } };



                ViewBag.IdMaterial = new SelectList(db.Materiales, "IdMaterial", "Material");
                ViewBag.IdMovimiento = new SelectList(db.Movimientos, "IdMovimiento", "Estado");
                ViewBag.IdContacto = new SelectList(db.Contactos, "IdContacto", "Contacto", movimientos.IdContacto);
                ViewBag.IdTipoM = new SelectList(db.TiposMovimientos, "IdTipoM", "Movimiento", movimientos.IdTipoM);
                return View(ci);
            }

            // POST: Entradas_Salidas/Create
            // To protect from overposting attacks, please enable the specific properties you want to bind to, for 
            // more details see https://go.microsoft.com/fwlink/?LinkId=317598.
            [HttpPost]
            [ValidateAntiForgeryToken]
            public ActionResult Create(int idmovimiento, int idtipom, int idcontacto, int precio,int cantidad,int idmaterial, Entradas_Salidas entradas_Salidas, Movimientos movimientos, List<MSE>ci)
            {
                if (ModelState.IsValid)
                {
                    using (BDMonlic1Entities db = new BDMonlic1Entities())
                    {
                        foreach(var i in ci)
                        {
                         db.entradamov(idmovimiento, idtipom, idcontacto, precio, cantidad, idmaterial);

                        }
                        db.SaveChanges();
                    }
                    return RedirectToAction("Index");
                }

                ViewBag.IdMaterial = new SelectList(db.Materiales, "IdMaterial", "Material", entradas_Salidas.IdMaterial);
                ViewBag.IdMovimiento = new SelectList(db.Movimientos, "IdMovimiento", "Estado", entradas_Salidas.IdMovimiento);
                ViewBag.IdContacto = new SelectList(db.Contactos, "IdContacto", "Contacto", movimientos.IdContacto);
                ViewBag.IdTipoM = new SelectList(db.TiposMovimientos, "IdTipoM", "Movimiento", movimientos.IdTipoM);
                return View(entradas_Salidas);
            }


    el error dice que falta mandar el precio pero yo lo estoy digitando en la vista 

    lunes, 18 de febrero de 2019 23:01

Todas las respuestas

  • el error dice que falta mandar el precio pero yo lo estoy digitando en la vista 

    Pon un punto de ruptura en el controlador y examina los valores que te llegan en los parámetros. Si el precio llega correctamente pero te da un error al grabarlo, entonces habría que revisar "entradamov", que puede tener algún error. En cambio, si el precio no llega al método de acción, indicaría que el default binder no ha sido capaz de resolverlo. En ese caso, usa la F12 en el navegador para capturar el Post y mira el valor que está enviando, a ver si realmente tiene el mismo nombre que le has puesto al parámetro y contiene el valor deseado. Si todo eso está bien y aún así no te recoge el valor, indicaría un problema de formato, por ejemplo, que hayas usado para los decimales un punto en lugar de una coma o viceversa (recuerda que la validación que hace el navegador podría ser distinta que la que hace el servidor).
    martes, 19 de febrero de 2019 7:42