簡體   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