1. ホーム
  2. c#

ASP.NET MVCでJavaScript/jQueryを使って別ページにリダイレクトさせる

2023-10-29 02:45:19

質問

ASP.NET MVC 3.0でJavaScript/jQuery/Ajaxを使って、あるページから別のページにリダイレクトしたいのですが、どうすればいいですか?ボタンのクリックイベントで、私は以下のようなJavaScriptコードを書きました。

function foo(id)
{
    $.post('/Branch/Details/' + id);
}

私のコントローラのコードはこのようなものです。

public ViewResult Details(Guid id)
{
     Branch branch = db.Branches.Single(b => b.Id == id);
     return View(branch);
}

ボタンをクリックするとBranchController内のDetailsアクションが呼び出されるのですが、Detailsビューに戻りません。

エラーや例外は発生していません。でステータス200 OKを表示しています。 Firebug . また、どのようにすれば詳細表示ページにリダイレクトできるのでしょうか?

どのように解決するのですか?

あなたは、$.post AJAXコールで成功コールバックを購読していません。 つまり、リクエストは実行されましたが、その結果については何もしていません。結果を使用して何か便利なことをしたい場合は、試してみてください。

$.post('/Branch/Details/' + id, function(result) {
    // Do something with the result like for example inject it into
    // some placeholder and update the DOM.
    // This obviously assumes that your controller action returns
    // a partial view otherwise you will break your markup
});

一方、リダイレクトをしたい場合は、絶対にAJAXは必要ありません。AJAXを使うのは、同じページにとどまり、その一部だけを更新したいときだけです。

つまり、ブラウザをリダイレクトさせたいだけなら

function foo(id) {
    window.location.href = '/Branch/Details/' + id;
}

余談ですが このようなハードコーディングのURLは決して使ってはいけません。ASP.NET MVCアプリケーションでurlを扱うときは、常にurlヘルパーを使用すべきです。ですから

function foo(id) {
    var url = '@Url.Action("Details", "Branch", new { id = "__id__" })';
    window.location.href = url.replace('__id__', id);
}