繁体   English   中英

MVC,Ajax在局部视图中的开始只能工作一次

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM