ResponseRedirect を返すコントローラー関数を作成して、代わりにその ResponseRedirect を Json オブジェクトとして返すにはどうすればよいですか?
私はこのようなことをしたい
return Json(new { url = RedirectToAction("AccountMyProducts", "Account"), redirect = "true" });
私のjsonobjectでリダイレクトURLを取得するには。
ResponseRedirect を返すコントローラー関数を作成して、代わりにその ResponseRedirect を Json オブジェクトとして返すにはどうすればよいですか?
私はこのようなことをしたい
return Json(new { url = RedirectToAction("AccountMyProducts", "Account"), redirect = "true" });
私のjsonobjectでリダイレクトURLを取得するには。
このようにする
return Json(data, JsonRequestBehavior.AllowGet);
説明 : 関数は、ActionResult によって継承される JsonResult の型を返します。
JsonRequestBehavior.AllowGet
: これは、HTTP GET を使用してデータを返す JSON リクエストによる非常に特殊な攻撃から保護するためです。
基本的に、アクション メソッドが機密データを返さない場合は、安全に get を許可する必要があります。
ただし、MVC は、この攻撃からユーザーを保護するために、DenyGet をデフォルトとしてこれを組み込みます。HTTP GET を介して公開することを決定する前に、公開しているデータの意味を考慮する必要があります。
json データに基づいてリダイレクトする予定がある場合
return Json(new
{
redirectUrl = Url.Action("AccountMyProducts", "Account"),
isredirection= true
});
Jqueryの成功コールバック関数では、次のようにします
$.ajax({
.... //some other stuffs including url, type, content type.
//then for success function.
success: function(json) {
if (json.isredirection) {
window.location.href = json.redirectUrl;
}
}
});
これを試すことができます:
return Json(new { url = "Account/AccountMyProducts", redirect = "true" });
実際の URL をすぐに返すのではなく、コントローラ アクションを呼び出すメソッドによって評価されるをRedirectToAction(...)
返すことに注意してください。RedirectToRouteResult