【发布时间】:2019-09-16 12:00:00
【问题描述】:
我遇到了一个奇怪的问题,即其中包含 ajax 表单的部分视图。它工作一次,但在那之后,控制器至少认为它工作正常,但部分视图内容不会更新,即使至少控制器中的数据实际上具有更新的模型。
我不知道该怎么做。
这可能与我替换数据的 div 有关系吗?
我是否应该不使用 ajax 表单而只使用 jquery 向控制器发出 ajax 请求?
所以我的视图中有这个表单(不管它是在我的视图中还是在部分视图中)和一个包含部分 html 的 div
@using (Ajax.BeginForm("ChangePage", "Staging", null, new AjaxOptions { HttpMethod = "post", InsertionMode = InsertionMode.ReplaceWith, UpdateTargetId = "divResults", OnBegin = "showLoading", OnComplete = "hideLoading" }, new { id = "frmPage" }))
{
<input type="hidden" id="pageDir" name="pageDir" />
<input type="hidden" id="codeFilter" name="codeFilter" />
<input type="hidden" id="glauFilter" name="glauFilter" />
<input type="hidden" id="gacctnoFilter" name="gacctnoFilter" />
<input type="hidden" id="glcoFilter" name="glcoFilter" />
<input type="hidden" id="employeeFilter" name="employeeFilter" />
<input type="hidden" id="maxPages" name="maxPages" />
<input type="hidden" id="page" name="page" />
}
<div id="divResults" name="divResults">
@Html.Partial("~/Views/Staging/_stagingResults.cshtml", Model)
</div>
我有在局部视图中提交表单的 JS。所有这些工作都很好。我可以单击按钮,控制器被隐藏,生成我的新模型,部分视图生成 HTML 并显示在 divResults 但仅在第一次。
所做的任何其他页面更改都会执行上述所有操作,但不会将新的 HTML 放入 divResults。在 chrome 的开发控制台中,我可以看到新请求出现并返回正确的 HTML,但它永远不会被替换。
【问题讨论】:
-
请向我们展示复制您的问题的代码。
-
1) 确认您已加载 NuGet Microsoft.jQuery.Unobtrusive.Ajax。 2) 验证您在调试控制台中没有任何脚本错误。 3) 确保控制器返回
PartialView("_stagingResults")。 4)你是如何触发AJAX提交的? -
我是否应该不使用 ajax 表单而只使用 jquery 向控制器发出 ajax 请求? 你会发现更多关于 jQuery ajax 的示例,它会是当您最终遇到该用例时,更容易自定义请求。
标签: c# ajax asp.net-mvc