簡體   English   中英

如何在服務器端重定向以覆蓋帖子上的Angular.JS路由?

[英]How to redirect on the server side to override Angular.JS routing on a post?

我創建了一個使用Angular.JS來控制頁面之一的ASP.NET MVC5應用程序。 我可以使用$http.post成功地發回到ASP.NET控制器,但是,如果我嘗試return View("NewPage")return RedirectToAction("NewPage", "Home")則在ASP.NET控制器中return RedirectToAction("NewPage", "Home") ,它使我一直在Angular.JS頁面上。

有沒有一種方法可以覆蓋客戶端Angular.JS路由,以便可以使用ASP.NET MVC控制器將用戶發送到另一個視圖?

這是我的Angular.JS帖子:

        $http.post("/calculator/post", vm.data)
            .then(function (response) {
                // Success

                // reset the data on a successful submit
                vm.data = {};
                vm.dataObjects = {};

            }, function (error) {
                // Failure
                vm.errorMessage = "Failed to find rates.";
            })
            .finally(function () {
                vm.isSubmitBusy = false;
            });

這是我的ASP.NET控制器:

    //POST: Calculator
    [HttpPost]
    public ActionResult Post(CalcFormViewModel data)
    {
        if (ModelState.IsValid)
        {
           return View("NewPage");
        }

        TempData["Error"] = "An error occurred.";
        return RedirectToAction("Error");
    }

使用我的ASP.NET控制器中的斷點,我可以確認已到達return View()return RedirectToAction() ,但是在成功發布之后,該頁面在瀏覽器中不會更改。

那是因為您沒有要求瀏覽器導航到新資源。 您正在使用XMLHttpRequest發出請求。 使用XMLHttpRequest發出的請求收到的響應不會影響瀏覽器的導航。 您將需要解釋回調( then子句)中的響應,並通過在javascript中擺弄window.location.href來強制進行頁面更改。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM