Я выбираю записи для пользователя на основе его 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 });
}
Это будет зависеть от того, как вы вызываете это действие контроллера. Поскольку вы используете 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 на случай, если вы не хотите перенаправлять, который первый случай в вашем действии контроллера.
Невозможно сделать это, клиент выполняет сценарий AJAX, поэтому он не сможет обработать что-либо еще.
Я предлагаю вам выполнить перенаправление в клиентском скрипте на основе данных, возвращаемых функцией обратного вызова.
Посмотрите на аналогичный вопрос здесь: http://bytes.com/topic/javascript/answers/533023-ajax-redirect