Ajax 调用控制器后 MVC 刷新页面

MVC refreshing page after Ajax call to controller

我的控制器中有以下内容:

public async Task < ViewResult > Favourites(string ids) {
    // code that fetches book data from API 

    if (data != null)

    {
        var bookList = JsonConvert.DeserializeObject < Book[] > (data);

        foreach(var book in bookList) {
            var matches = new List < bookList > ();
            if (bookList.All(book => ids.Contains(book.Id))) {
                matches.Add(book);
            }

            return View("Index", matches.ToArray());
        }
    }
    return View("Index");
}

我认为:

   <script>

        function getFavouriteBooks() {
            var ids = JSON.parse(localStorage.getItem("bookIds"));

            $.ajax({
                type: "POST",
                url: '/Home/Favourites',
                data: { ids: localStorage.getItem('bookIds') },
                success: function (response) {
                    window.location.href = '/Home/Favourites/' + ids ;
                }
            });
        }
    </script>

我认为 window.location.href = '/Home/Favourites/' + ids; 不正确,但我的目标是使用从我的控制器 (return View("Index", matches.ToArray());) 调用的视图重新加载页面,但我不确定该怎么做。

第一次点击控制器时,参数已正确填充数据,但第二次为空。我知道这是因为它是空的。

有人可以解释一下如何在使用 ids 参数调用 ajax 之后加载视图吗?

您的控制器仅由 get 请求调用 如果您想从您的控制器更改 ajax 设置或将 HttpPost 属性添加到您的控制器。

type: "GET",

解决方案是将 ajax 调用成功部分更改为:

      success: function (data) {
                        $("body").html(data);
                    }