Ajax post方法中的表单发送空对象

时间:2018-09-04 13:07:48

标签: javascript jquery html

我有一个Webform,其中包含要在对象中捕获的多个字段,并将其发送到控制器方法。表单具有以下代码:

<div class="panel-footer">
            @using (Html.BeginForm("NuevaOpcion", "Home", FormMethod.Post, new { @id = "frm_nueva_opcion" })) {
                @Html.HiddenFor(m => m.Id)
                <div class="row">
                    <div class="col-md-6">
                        <div class="form-group" style="margin-bottom: .7em;margin-top: .7em;">
                            <button class="btn btn-success btn-xs" type="button" onclick=" $('#row-nueva-opcion').toggle()" id="add-opcion">
                                <span class="glyphicon glyphicon-plus-sign"></span> A&ntilde;adir nueva opci&oacute;n
                            </button>
                        </div>
                    </div>
                </div>
                <div class="row" id="row-nueva-opcion" style="display:none">
                    <div class="col-md-10">

                        <label>
                            <input type="checkbox" id="opcion-extra" onclick=" $('#nuevo-precio').attr('disabled', !this.checked);" />
                            Es opci&oacute;n extra
                        </label>
                        <div class="input-group" style="margin-bottom:1.7em;">
                            <input type="text" placeholder="Opción" class="form-control" name="nombre" style="max-width:70%;">
                            <input type="number" placeholder="Cantidad" min="1" value="1" class="form-control" name="cantidad" style="max-width:15%;">
                            <input type="number" placeholder="Precio" class="form-control" id="nuevo-precio" name="precio" style="max-width:15%;" disabled>
                            <input type="hidden" name="idrespuesta"  id="idrespuesta" value="@listItems.Select(x=>x.Value).FirstOrDefault()" />
                            <div class="input-group-addon">&euro;</div>
                            <span class="input-group-btn">
                                <a class="btn btn-primary" data-title="Confirmación de acción" data-toggle="modal" data-target="#modal_confirm" onclick="confirmar('frm_nueva_opcion')">
                                    <span class="glyphicon glyphicon-floppy-disk"></span> Guardar
                                </a>
                            </span>
                        </div>

                    </div>
                    <div class="col-md-8">
                        <div class="form-group">
                            <label>
                                ¿Para que pregunta es la opción?
                                @Html.DropDownList("OptionSelectedItem", listItems, new { @class = "form-control" })
                            </label>
                        </div>
                    </div>
                </div>
            }
        </div>

要管理它,我有一个脚本如下:

function mostrarModal(idmodal, mensaje, tipo) {
$(idmodal + ' .modal-body h4').addClass(tipo == 'error' ? 'text-danger' : 'text-secondary').html(mensaje);
$(idmodal).modal('show');
}

function enviar(form) {
debugger;
var NuevoPrecio = $('#' + form).attr("nuevo-precio");
if( (NuevoPrecio == null) || (typeof NuevoPrecio === "undefined") ) { var NuevoPrecio = 0; }
var datos = {
    Id: $('#' + form).attr("#Id"),
    IdPresupuestador: $('#' + form).attr("#idPresupuestador"),
    IdRespuesta: $('#' + form).attr("#idrespuesta"),
    Cantidad: $('#' + form).attr("#cantidad"),
    Nombre: $('#' + form).attr("#nombre"),
    Precio: NuevoPrecio,
}
$.post("NuevaOpcion", {
    contentType: 'application/json; charset=utf-8',
    data: JSON.stringify(datos),
});
}

var modalConfirm = function (callback) {
$("#modal-btn-si").on("click", function () {
    callback(true);
    $("#modal-confirm").modal('hide');
});
$("#modal-btn-no").on("click", function () {
    callback(false);
    $("#modal-confirm").modal('hide');
}); };

function confirmar(form, text) {
$("#modal-confirm").modal('show');
modalConfirm(function (confirm) {
    if (confirm) {
        enviar(form);
    }
}); };

麻烦的是,我在多个方面更改了脚本,现在看起来像这样,因为我能管理的最好的办法是将所有表单都放在一个对象中。我不能使用该对象中包含的属性,不能使用脚本,也不能使用控制器方法。

所以,问题是,我如何选择错误的字段?我尝试使用“#”,“。”,只是引号之间的名称,正如我所说,我能得到的最好的方法是将单个对象中的整个表单包含在内。预先感谢。

0 个答案:

没有答案