父视图提交更新后Partial View无法重新加载的问题
问题:下拉框过滤父视图后,子视图无法自动刷新
场景说明
我有一个包含下拉框和表格的父视图,以及展示父视图项详情的子视图(Partial View)。双击父视图中的行可通过Ajax调用更新子视图,展示对应项的详情。当下拉框过滤父视图时,我希望子视图自动更新为父表首行的详情,如同用户双击首行一般。
父视图加载子视图的代码
<br><div id="divpartial"> @{ Html.RenderAction("MeetingDetails", "Meetings", new { id = Model.MeetingID }); } </div>
正常工作的双击事件Ajax代码
$("body").on("dblclick", "#meetingList td", function () { var row = $(this).closest("tr"); //alert("DoubleClick Row "+row.find("td:eq(0)").text()); var MeetingID = Number(row.find("td:eq(0)").text()); $.ajax({ type: "GET", contentType: "application/json; charset=utf-8", url: '@Url.Action("MeetingDetails", "Meetings")', data: { "id": MeetingID }, dataType: "html", success: function (result) { $("#divpartial").html(result); } }) });
下拉框选择事件代码(父视图更新正常,但子视图不刷新)
$('#pid').change(function () { //选择项目以过滤父表 document.getElementById('#Pfilter').value = $(this).val(); $('#meetingsForm').submit(); //<== 此步骤正常,会调用表单控制器方法更新父表,仅显示所选项目的条目 $.ajax({ type: "GET", updatetargetid: "divpartial", contentType: "application/json; charset=utf-8", url: '@Url.Action("MeetingDetailsFromPID", "Meetings")', data: { "pid": $(this).val() }, dataType: "html", error: function (xhr, status, error) { var err = JSON.parse(xhr.responseText); alert(err.Message); // 未触发该方法,说明Ajax调用成功 }, success: function (result) { $('#divpartial').html(result); // 控制器方法已调用,模型数据正确,但子视图从未更新 } }) });
控制器方法(调试确认逻辑正常)
public ActionResult MeetingDetails(int? id = null) { //传入会议ID或null MeetingDetailsVM detailsVM = new MeetingDetailsVM(); return PartialView(detailsVM); } public ActionResult MeetingDetailsFromPID(int pid) { //传入项目ID,使用该项目的第一个会议ID加载子视图 MeetingDetailsVM detailsVM = new MeetingDetailsVM(); return PartialView(detailsVM); // 已在此处断点检查,模型数据符合预期 }
内容的提问来源于stack exchange,提问作者Paul Gibson
相关产品推荐
相关产品推荐

