ASP.NET MVC RedirectToAction не обновляет страницу - PullRequest
1 голос
/ 23 апреля 2019

У меня есть действие контроллера Обновить, которое просто обновляет текущую страницу. Но когда я вызываю это действие через метод RedirectoAction, у меня возникает проблема, страница не обновляется. После этого нужно нажать кнопку «Обновить», чтобы самостоятельно вызвать действие «Обновить», чтобы получить желаемый результат.

Это мой код на стороне клиента. Который вызывает мое действие ResetItems, которое, в свою очередь, перенаправляет на действие Обновить.

function ResetSelectedItems() {

var guidId = $("#guidId")[0].value;
console.log(guidId[0].value);
$.ajax({
    type: 'POST',
    url: '/UploadFile/ResetItems',
    data: { guidId : guidId},

     }
)

}

    [HttpPost]
    [ActionName("ResetItems")]
    public ActionResult ResetItems(string guidId) 
    {
      //Some logic here updating in db etc..
      return RedirectToAction("Refresh");
    }

    [ActionName("Refresh")]
    public ActionResult Refresh(int? id) 
    {
      //Refresh logic which eventually render refresh the current view 
    }

Также я хотел бы отметить, что в этом проекте мы использовали шаблон IUnitOfWork, может ли он привести к какому-то неожиданному результату?

P.S. Я новичок в ASP.NET, пожалуйста, не судите жестко

Редактировать: Что я сделал до сих пор, чтобы выяснить, что происходит.

Я проверяю через fiddler, получил ли я кешированный результат из браузера, или думаю, что с браузером нет проблем с кешем, потому что я получил в результате http 200.

Я использовал этот атрибут в обоих действиях [OutputCache(Location=System.Web.UI.OutputCacheLocation.None)] Не помогает.

1 Ответ

2 голосов
/ 23 апреля 2019

Вы используете AJAX-запрос, и это означает, что независимо от ответа, html-страница не будет перезагружена.Я думаю, вам нужно что-то вроде этого:

[HttpPost]
[ActionName("ResetItems")]
public ActionResult ResetItems(string guidId) 
{
     //Some logic here updating in db etc..
     //string redirectUrl = Url.Action("Refresh", new { id = "your int id" });
     string redirectUrl = Url.Action("Refresh");
     return Json(new { redirectUrl });
}

$.ajax({
    type: 'POST',
    url: '/UploadFile/ResetItems',
    data: { guidId : guidId},
    success: function (response) {
        window.location.replace(response.redirectUrl);
    }
});
...