我有一个View(ViewA),它有一个调用Ajax请求的按钮。此Ajax请求是POST请求,后者又在另一个控制器中调用POST Action。 Action被调用,但是在这个Action的结尾,我打算转到另一个View(ViewB),所以我返回一个View:
return View("ViewName");
问题是它不会转到另一个视图。我尝试了重定向,查看("错误")以及其他任何内容,但它只停留在ViewA中。
这是Ajax代码:
self.addToCart = function () {
var itemId = $('#category-item').val();
var newOrder = ko.toJS(self.Item);
$.ajax({
url: "/item/addorder",
type: "POST",
contentType: "application/json; charset=utf-8",
data: ko.utils.stringifyJson(newOrder),
success: function (result) {
//Empty
}
});
这是由Ajax POST调用的Action,我想:
[Route("item/addorder")]
[HttpPost]
public async Task<ActionResult> AddOrder(NewOrderViewModel newOrder)
{
ActionResult result = null;
string token = GetToken;
Task<int> orderIdTask = _OrderWebService.AddOrder(token, newOrder);
try
{
int orderId = await orderIdTask;
TempData["OrderId"] = orderId;
result = View(); // or RedirectToAction("Abc"); either way it doesn't work
}
catch
{
result = View("Error");
}
return result;
}
你们能解释一下我做错了什么吗?
答案 0 :(得分:-1)
正如StephenMuecke指出的那样,AJAX是异步的,并且不会导致浏览器更改页面。您可以使用表单执行标准回发,也可以更改代码成功块中的浏览器页面。
$.ajax({
url: "/item/addorder",
type: "POST",
contentType: "application/json; charset=utf-8",
data: ko.utils.stringifyJson(newOrder),
success: function (result) {
//Naviagate to new url
window.location = "www.stackoverflow.com";
}
});