1. ホーム
  2. asp.net-mvc

[解決済み] RedirectToActionでURLが変更されない、またはIndexビューに移動しない

2022-03-13 17:13:34

質問

を使ってみました。 RedirectToAction を実行した後、コントローラに投稿して保存しましたが、URLは変更されず、リダイレクトも機能しないようです。デバッグの際、リダイレクトはコントローラのアクションメソッドに入ることを補足しておきます。これは URL を変更したり Index ビューを表示します。

public ViewResult Index()
{
    return View("Index", new TrainingViewModel());
}

public ActionResult Edit()
{
    // save the details and return to list
    return RedirectToAction("Index");    
}

何が間違っているのでしょうか?

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
    routes.IgnoreRoute("{resource}.js/{*pathInfo}");
    routes.IgnoreRoute("{*favicon}", new { favicon = @"(.*/)?favicon.ico(/.*)?" });

    routes.MapRoute(
        "Default", // Route name
        "{controller}/{action}/{id}", // URL with parameters
        new { controller = "Home", action = "Index", id = "" } // Parameter defaults
    );
}

jQueryの呼び出し。

this.SynchValuesToReadOnly = function() {
    window.location = $('#siteRoot').attr('href') + 'Sites/';           
};

this.OnSiteEdit = function() {
    // post back to the server and update the assessment details    
    var options = {
        target: '',
        type: 'post',
        url: '/Site/Edit',
        beforeSubmit: othis.validate,
        success: othis.SynchValuesToReadOnly
    };

    $('#uxSiteForm').ajaxSubmit(options);
};

解決方法は?

表示されているコードは正しいです。私の勝手な推測では、標準的なPOSTを行っていないのではないかと思います(例えば、AJAXポストではリダイレクトが機能しません)。

ブラウザはAJAX POSTに対するリダイレクトレスポンスを無視します。AJAXの呼び出しがリダイレクト応答を返したときにリダイレクトする必要があるかどうかは、スクリプトでリダイレクトする次第です。