JsonResultとしてのUserId
に基づいてユーザーのレコードをフェッチしています...
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でそれを呼び出していると思います。この場合、コントローラーアクションからリダイレクトできません。 AJAXスクリプトのsuccess
コールバックでこれを行う必要があります。これを実現する1つの方法は次のとおりです。
return Json(new
{
redirectUrl = Url.Action("Index", "Home"),
isRedirect = true
});
そして成功コールバックで:
success: function(json) {
if (json.isRedirect) {
window.location.href = json.redirectUrl;
}
}
備考:リダイレクトしたくない場合は、コントローラーアクションの最初のケースであるisRedirect = false
をJSONに必ず含めてください。
ダリン・ディミトロフの答えに追加。 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);
}
お役に立てれば。
電話をかけることについてどう思いますか:
return (new YourOtherController()).JSONResultAction();
リダイレクトを使用する代わりに?
そして、エリアで作業する場合...
コントローラ:
return Json(new
{
redirectUrl = Url.Action("Index", "/DisparadorProgSaude/", new { area = "AreaComum" }),
isRedirect = true
});
見る:
success: function (json) {
if (json.isRedirect) {
window.location.href = json.redirectUrl;
}
},
これを行う方法はありません。クライアントはAJAXスクリプトを実行しているため、他のことは処理できません。
コールバック関数で返されたデータに基づいて、クライアントスクリプトでリダイレクトすることをお勧めします。
ここで同様の質問を見てください: http://bytes.com/topic/javascript/answers/533023-ajax-redirect