MVC,Ajax beginform在部分视图中只能运行一次

时间:2019-04-27 01:56:01

标签: c# ajax asp.net-mvc

我在一个带有ajax形式的局部视图中遇到了一个奇怪的问题。它只能运行一次,但是之后,控制器至少认为它可以正常工作,但是即使至少控制器中的数据实际上具有更新的模型,部分视图内容也不会更新。

我不知道该怎么办。

它与div有关吗?用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 个答案:

答案 0 :(得分:0)

您可以在AJAX的begin()方法的开始表单属性上添加一个javascript函数,该表单属性将在您的ajax请求完全加载后触发

  @using (Ajax.BeginForm("AjaxOptionPostData", "Home", new AjaxOptions { HttpMethod = "POST", OnSuccess = "OnSuccess" }))   

这里OnSuccess将是您的javascript方法

    function OnSuccess()
     {
       //You can do your stuff here
     }