在更新(Javascript)部分视图后,DropDownItem不会加载项目

时间:2018-11-13 23:27:39

标签: javascript asp.net-mvc razor

我具有以下功能:用户在表单中注册一系列数据,在发送该表单并将其保存在数据库中之后,将其重定向到第二个表单,该表单必须在其中加载其余信息,可能在第二种形式中包含许多第一种形式的值,但这并非总是如此,这就是为什么在第二种形式中有一个按钮可以“复制”第一种形式的数据,从而减少数据输入。

像我一样吗?

我创建了一个主视图,在该视图中,表单作为带有空模型字段的局部视图被加载,以便用户可以输入与第一个表单不同的信息。 主视图:

    <div id="partialView">
        @Html.Partial("_CreatePartialResponsable", Model)
    </div>

在包含部分视图的表单中,有一个下拉列表通过Web服务填充。第一次加载空白表单时,此下拉列表已正确填充。

DropDownList在局部视图中

        <div class="form-group col-md-6">
            @Html.LabelFor(model => model.SeguroNombre, htmlAttributes: new { @class = "titulocampo" })
            <select id="SeguroNombre" name="SeguroNombre" class="form-control"><option value=""></option></select>
             @Html.ValidationMessageFor(model => model.SeguroNombre, "", new { @class = "text-danger" })
        </div>

使用此脚本加载了dropdowlist,我从document.ready事件的主视图中调用了它(效果很好)

function llenaDropDownSeguros(url, valor) {

var data = { nombre: valor };
$.post(url, data).done(function (data) {
    if (data.isError) {
        muestraError(data.Titulo, data.Mensaje);
    } else {
        for (var i = 0; i < data.length; i++) {
            $('#SeguroNombre').append('<option value=' + data[i].codigoSeguro + '>' + data[i].descripcion + '</option > ');
        }
    }
});

};

如果用户想“复制”先前形式的信息,请按下执行以下功能js的按钮以转到服务器,搜索数据并返回相同的局部视图,但会加载相应的字段。重新渲染?

用于“复制”数据的脚本

function loadPartial(url, valor) {
$("#esperar").show();
var data = { cedula: valor };
$.post(url, data).done(function (data) {
    if (!data.isError) {
        $("#esperar").hide();
        $("#partialView").html(data);
    } else {
        $("#esperar").hide();
        muestraError(data.Titulo, data.Mensaje);
    }
}).fail(manejarErrorAjax);

};

出什么问题了?

按下复制按钮,并向部分视图重新加载“已复制”数据后,下拉列表项不再存在。我知道它们会丢失,因为我当然知道,当重新加载部分视图时,下拉列表为空。我不明白的原因是,在重新加载该局部视图之后,无法重新填充dropdowlist。通过测试,我进行了更改,并在ddl的click事件中调用了loadPartial函数以查看其是否正常运行,但是即使在浏览器控制台中,也可以看到该函数已执行且数据对象采用94个值,这些它们不会加载到dll。

您能帮我解决这个问题吗?

0 个答案:

没有答案