我具有以下功能:用户在表单中注册一系列数据,在发送该表单并将其保存在数据库中之后,将其重定向到第二个表单,该表单必须在其中加载其余信息,可能在第二种形式中包含许多第一种形式的值,但这并非总是如此,这就是为什么在第二种形式中有一个按钮可以“复制”第一种形式的数据,从而减少数据输入。
像我一样吗?
我创建了一个主视图,在该视图中,表单作为带有空模型字段的局部视图被加载,以便用户可以输入与第一个表单不同的信息。 主视图:
<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。
您能帮我解决这个问题吗?