我基于他的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 });
}
答案 0 :(得分:56)
这取决于您如何调用此控制器操作。当你使用JSON时,我想你是在AJAX中调用它。如果是这种情况,则无法从控制器操作重定向。您需要在AJAX脚本的success
回调中执行此操作。实现目标的一种方法如下:
return Json(new
{
redirectUrl = Url.Action("Index", "Home"),
isRedirect = true
});
在成功的回调中:
success: function(json) {
if (json.isRedirect) {
window.location.href = json.redirectUrl;
}
}
备注:请确保在JSON中包含isRedirect = false
,以防您不想重定向,这是控制器操作中的第一种情况。
答案 1 :(得分:3)
加入Darin Dimitrov的回答。对于C#.NET MVC - 如果要重定向到不同的页面/控制器并希望将对象/模型发送到新控制器,可以执行以下操作。
在JsonResult方法中(在控制器中):
ErrorModel e = new ErrorModel();
e.ErrorTitle = "Error";
e.ErrorHeading = "Oops ! Something went wrong.";
e.ErrorMessage = "Unable to open Something";
return Json(new
{
redirectUrl = Url.Action("Index", "Home",e),
isRedirect = true
});
在成功的回调中:
success: function(json) {
if (json.isRedirect) {
window.location.href = json.redirectUrl;
}
}
如果新控制器可以接受如下所示的模型/对象..您可以将对象传递给新控制器/页面
public ActionResult Index(ErrorModel e)
{
return View(e);
}
希望这有帮助。
答案 2 :(得分:2)
你想怎么做才能打电话:
return (new YourOtherController()).JSONResultAction();
而不是使用重定向?
答案 3 :(得分:1)
如果你在区域工作......
控制器:
return Json(new
{
redirectUrl = Url.Action("Index", "/DisparadorProgSaude/", new { area = "AreaComum" }),
isRedirect = true
});
查看:
success: function (json) {
if (json.isRedirect) {
window.location.href = json.redirectUrl;
}
},
答案 4 :(得分:0)
无法做到这一点,客户端正在执行AJAX脚本,因此无法处理任何其他内容。
我建议您根据回调函数中返回的数据重定向客户端脚本。
在这里查看类似的问题:http://bytes.com/topic/javascript/answers/533023-ajax-redirect