javascriptを使用して、新しいページにリダイレクトできます。の値をwindow.location.href
ajax呼び出しのsuccess
/complete
イベントの新しいURLに設定します。
var saveUrl = '@Url.Action("SaveItems","Store")';
var newUrl= '@Url.Action("Stores","Store")';
$.ajax({
type: 'POST',
url: saveUrl,
// Some params omitted
success: function(res) {
window.location.href = newUrl;
},
error: function() {
alert('The worst error happened!');
}
});
またはdone
イベントで
$.ajax({
url: someVariableWhichStoresTheValidUrl
}).done(function (r) {
window.location.href = '@Url.Action("Stores","Store")';
});
上記のコードは、Url.Action
ヘルパーメソッドを使用して、アクションメソッドへの正しい相対URLを作成しています。javascriptコードが外部javascriptファイル内にある場合は、アプリルートへのURLをビルドし、それを外部jsファイル内のスクリプト/コードに渡し、この投稿で説明されているように、それを使用してアクションメソッドへのURLをビルドする必要があります。
パラメータを渡す?
いくつかのクエリ文字列パラメータを新しいURLに渡したい場合は、ルート値も受け入れるメソッドのこのオーバーロードを使用して、クエリ文字列を使用してURLを作成できます。Url.Action
var newUrl = '@Url.Action("Stores","Store", new { productId=2, categoryId=5 })';
ここで、2と5は他の実際の値に置き換えることができます。
これはhtmlヘルパーメソッドであるため、外部のjsファイルではなく、かみそりのビューでのみ機能します。コードが外部jsファイル内にある場合は、urlクエリ文字列パラメーターを手動で作成する必要があります。
サーバー側で新しいURLを生成する
mvcヘルパーメソッドを使用して、アクションメソッドへの正しいURLを生成することは常に良い考えです。アクションメソッドから、リダイレクトされる新しいURLのプロパティを持つjsonstrucutreを返すことができます。
UrlHelper
これを行うには、コントローラー内のクラスを使用できます。
[HttpPost]
public ActionResult Step8(CreateUser model)
{
//to do : Save
var urlBuilder = new UrlHelper(Request.RequestContext);
var url = urlBuilder.Action("Stores", "Store");
return Json(new { status = "success", redirectUrl = url });
}
これで、ajax呼び出しのsuccess
/done
コールバックで、戻り値を確認し、必要に応じてリダイレクトします。
.done(function(result){
if(result.status==="success")
{
window.location.href=result.redirectUrl;
}
else
{
// show the error message to user
}
});