无法从POST操作转移到另一个视图

时间:2015-03-11 09:49:46

标签: asp.net asp.net-mvc

我有一个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;
    }

你们能解释一下我做错了什么吗?

1 个答案:

答案 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";
        }
    });
相关问题