这让我们难以置信,不确定是否遇到错误或者是否有我们错过的东西。MVC JQuery发布不返回正确的部分视图结果
我有一个页面的一部分,其中包含一个动态的行数,每个做一个JQuery发布到一个返回一个部分视图的方法的删除按钮。
function removeRow(panelName) {
var deferredObject = $.Deferred();
$.post("Resumes/RemovePanelRow", $('form').serialize() + "&panelName=" + panelName, function (partialView) {
$('#' + panelName).html(partialView);
$('#' + panelName).unobtrusiveUI();
deferredObject.resolve();
});
return deferredObject.promise();
}
单击删除按钮将隐藏删除值指定为true。该方法从窗体中获取视图模型,并删除任何具有值设置为true的行。然后它返回一个局部视图。
[HttpPost]
public PartialViewResult RemovePanelRow(ResumeVM resume, string panelName)
{
var allEdu = resume.Education.Where(x => x.Remove == true).ToList();
foreach (var edu in allEdu)
{
resume.Education.Remove(edu);
}
return PartialView("PartialViews/_newEducation", resume);
}
管窥_newEducation.cshtml:
@model ResumeTracking.Models.ViewModels.ResumeVM
@Html.EditorFor(model => model.Education)
的EditorFor刚刚返回行。
问题是无论您单击哪一行删除按钮,它都会删除最后一行。
调试时,我们看部分视图结果,然后再回到jquery函数,它看起来是正确的。该模型包含最后一行,只有删除的行不存在。只要它回到jquery partialView变量不匹配的方法返回。
使用$ .get而不是$ .post –