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