Asp.net-Mvc

如何從 ASP.NET MVC 中的 JSONResult 方法重定向到控制器操作?

  • May 19, 2010

我正在根據使用者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");
  }
}

如何從 asp.net mvc 中的 JsonResult 方法重定向到控制器操作?任何建議…

編輯: 這似乎不起作用……

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 中呼叫它。如果是這種情況,您無法從控制器操作重定向。您需要在successAJAX 腳本的回調中執行此操作。實現它的一種方法如下:

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

在成功回調中:

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

備註:確保包含isRedirect = false在 JSON 中,以防您不想重定向,這是控制器操作中的第一種情況。

引用自:https://stackoverflow.com/questions/2864972