[英]MVC, Ajax beginform in partial view only works once
我有一个奇怪的问题,部分视图中有一个ajax形式。 它工作一次但在此之后,控制器至少认为它工作正常但部分视图内容不更新,即使至少在控制器中的数据实际上具有更新的模型。
我不知道该做什么。
它可以与div有关吗?在局部视图之外替换数据?
我应该不使用ajax表单并只使用jquery对控制器执行ajax请求吗?
所以我在我的视图中有这个表单(如果它在我的视图或部分视图中无关紧要)和一个div来保存部分html
@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但它永远不会被替换。
您可以在AJAX开始表单属性中的success()方法上添加一个javascript函数,该函数将在您的ajax请求完全加载后触发
@using (Ajax.BeginForm("AjaxOptionPostData", "Home", new AjaxOptions { HttpMethod = "POST", OnSuccess = "OnSuccess" }))
这里的OnSuccess将是你的javascript方法
function OnSuccess()
{
//You can do your stuff here
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.