[英]How to move between MVC controllers using knockout.js?
從一個MVC控制器轉移到另一個MVC控制器時遇到問題。 我是MVC /淘汰賽組合的新手,正在嘗試尋找最佳方法。
我有一個HomeController,它執行一些登錄過程。 控制器的“登錄”視圖包含將數據發布到其中的敲除腳本。 在選擇了某個選項后,通過按下帶有data-bind =“ clicked:SubmitLocation”的按鈕來執行此代碼。
self.SubmitLocation = function () {
var jsonData = ko.toJSON(new LoginModel(self.Username, self.Password, self.isAuthenticated, self.UserId, self.SelectedLocId, self.SelectedLocDesc));
alert(jsonData);
$.ajax({
ur: '@Url.Action("Login", "Home")',
type: 'post',
data: jsonData,
contentType: 'application/json',
success: function () { }
});
這將其帶入MVC控制器中的代碼:
[HttpPost]
public ActionResult ....{
return RedirectToAction("Products", "Product");
...}
通過代碼調試,我看到它毫無例外地被傳遞到了Product控制器甚至是Products視圖。 但是,瀏覽器本身的頁面仍保留在原始的HomeController / Login視圖中。 我要去哪里錯了?
我也嘗試過從同一個HOmeController返回一個不同的視圖,而不是RedirectToAction,並且它仍然相同。
您不能return RedirectToAction()
或return View()
給ajax調用。 成功登錄后,從控制器return Json(true)
並在ajax的success
回調中,重定向到Products
操作
[HttpPost]
public ActionResult Login(UserViewModel user)
{
// authentication code here
return Json(true);
}
JS:
self.SubmitLocation = function() {
var jsonData = ko.toJSON(new LoginModel(self.Username, self.Password, self.isAuthenticated, self.UserId, self.SelectedLocId, self.SelectedLocDesc));
$.ajax({
ur: '@Url.Action("Login", "Home")',
type: 'post',
data: jsonData,
contentType: 'application/json',
success: function(data) {
if (data)
location.href = '@Url.Action("Products", "Product")'; // redirect
}
});
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.