[英]how to have angularJS post data to MVC controller which redirects to a view
我正在使用AngularJS將一些數據發布到MVC操作方法中。 此操作方法將顯示其后視圖或重定向到另一個頁面。 當前所有發生的事情都是數據被發布,但是重定向不是通過MVC發生的。 我正在使用angular的window.location方法完成此操作。 我想知道是否有更好的方法,或者是否需要使用Angular發布其他內容。
在AI頁上,有角度腳本將數據發布到B頁,如下所示:
serviceDataFactory.POST('http://localhost:1234/home/B', someData, pageConfig).then(function () {
//on success
window.location = 'http://localhost:1234/home/Index';
},
function() {
//on error
window.location = 'http://localhost:1234/home/B';
});
這是我的服務工廠
app.factory('serviceFactory', function($http, $q) {
var service = {};
//POST
service.POST = function (url, postData, conf) {
var d = $q.defer();
$http({
method: 'POST',
url: url,
data: postData,
config: conf
}).success(function(data) {
d.resolve(data);
}).error(function(error) {
d.reject(error);
});
return d.promise;
}
return service;
}
);
在頁面BI上,希望重定向到另一個頁面。 這是我在MVC中的頁面B
[HttpPost]
public ActionResult B(string someData)
{
//recieve string someData and perform some logic based on it
.
.
.
if(boolCondition)
return RedirectToAction("Index", "Home");
else
return View();
}
在這里,一旦Angular發布到操作方法B,它將一直執行所有代碼,直到if(boolCondition)
語句為止。 由於我無法通過MVC影響重定向,因此我會在Angular中使用promise返回的成功或錯誤塊來實現。
我想知道是否有更好的方法可以做到這一點,或者我在這里做錯了什么,或者這是唯一可以接受的方法。 我如何才能有角度地切換到MVC操作方法,並讓進一步的重定向僅從那里繼續?
您不應將.success()
/ .error()
模式與$http
,因為已棄用了該模式。 而是將then()
與兩個參數一起使用,第一個參數是成功函數,第二個參數是錯誤函數。
$ http舊式的Promise方法成功和錯誤已被棄用。 請改用標准然后方法。 如果$ httpProvider.useLegacyPromiseExtensions設置為false,則這些方法將引發$ http / legacy錯誤。
您無需保證$http
的結果正確無誤,因為$http
返回一個Promise。 只需從您的服務返回$http
。
app.factory('serviceFactory', function($http, $q) {
var service = {};
//POST
service.POST = function (url, postData, conf) {
return $http({
method: 'POST',
url: url,
data: postData,
config: conf
});
}
return service;
});
使用此新的簡化代碼,您的Page A控制器將與以前一樣工作。 在服務器上,如果您想觸發該服務器,請確保發出500 http狀態代碼。
function() {
//on error
window.location = 'http://localhost:1234/home/B';
}
跑步。 響應標頭中的500將使AngularJS承諾在控制器中運行第二個函數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.