MVC, Ajax beginform в частичном представлении работает только один раз - PullRequest
0 голосов
/ 27 апреля 2019

У меня странная проблема с частичным представлением, содержащим форму ajax.Он работает один раз, но после этого контроллер, по крайней мере, считает, что работает нормально, но содержимое частичного представления не обновляется, даже если данные, по крайней мере, в контроллере, фактически имеют обновленную модель.

Понятия не имею, что с этим делать.

Может ли это иметь какое-то отношение к div I, заменяющему данные вне частичного представления?

Должен ли я просто не использовать форму 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, но он никогда не заменяется.

1 Ответ

0 голосов
/ 27 апреля 2019

Вы можете добавить функцию javascript в метод success () в AJAX, чтобы начать свойства формы, которые будут срабатывать после полной загрузки вашего запроса ajax

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

Здесь OnSuccess будет вашим методом javascript

    function OnSuccess()
     {
       //You can do your stuff here
     }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...