Как перенаправить к действию контроллера из метода JSONResult в ASP.NET MVC?

Я выбираю записи для пользователя на основе его UserId как JsonResult...

public JsonResult GetClients(int currentPage, int pageSize)
{
   if (Session["UserId"] != "")
   {
      var clients = clirep.FindAllClients().AsQueryable();
      var count = clients.Count();
      var results = new PagedList<ClientBO>(clients, currentPage - 1, pageSize);
      var genericResult = new { Count = count, Results = results };
      return Json(genericResult);
   }
   else
   {
         //return RedirectToAction("Index","Home");
   }
}

Как перенаправить к действию контроллера из метода JsonResult в asp.net mvc? Любое предложение...

Править: Это, кажется, не работает...

if (Session["UserId"] != "")
            {
                var clients = clirep.FindAllClients().AsQueryable();
                var count = clients.Count();
                var results = new PagedList<ClientBO>(clients, currentPage - 1, pageSize);
                var genericResult = new { Count = count, Results = results ,isRedirect=false};
                return Json(genericResult);
            }
            else
            {
                return Json({redirectUrl = Url.Action("Index", "Home"), isRedirect = true });
            }
25
задан ACP 19 May 2010 в 11:38
поделиться

2 ответа

Это будет зависеть от того, как вы вызываете это действие контроллера. Поскольку вы используете JSON, я полагаю, что вы вызываете его в AJAX. В этом случае вы не можете выполнить перенаправление из действия контроллера. Вам нужно будет сделать это в обратном вызове success сценария AJAX. Один из способов добиться этого:

return Json(new 
{ 
    redirectUrl = Url.Action("Index", "Home"), 
    isRedirect = true 
});

И в обратном вызове успеха:

success: function(json) {
    if (json.isRedirect) {
        window.location.href = json.redirectUrl;
    }
}

Примечание: обязательно включите isRedirect = false в JSON на случай, если вы не хотите перенаправлять, который первый случай в вашем действии контроллера.

56
ответ дан 28 November 2019 в 18:23
поделиться

Невозможно сделать это, клиент выполняет сценарий AJAX, поэтому он не сможет обработать что-либо еще.

Я предлагаю вам выполнить перенаправление в клиентском скрипте на основе данных, возвращаемых функцией обратного вызова.

Посмотрите на аналогичный вопрос здесь: http://bytes.com/topic/javascript/answers/533023-ajax-redirect

0
ответ дан 28 November 2019 в 18:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: