繁体   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