[英]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.