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