从ApiController获取数据并将其传递到另一个视图的最佳方式



所以我设置了一个ApiController,它接受搜索查询,并在这种情况下返回JSON。

我的_Layout.cshtml页面上还有一个搜索表单。当用户搜索任何东西时,我有一个ajax,它成功地命中了我的ApiController方法并返回了JSON,但我不确定该怎么办。我想重定向到/SearchResults/并显示结果,但我忍不住觉得我在使用WebApi,我应该去掉它。

从我的搜索按钮点击ApiController,然后将结果发送到另一个视图,这有意义吗?如何重定向到其他视图?

$('#btnSearch').click(function () {
            var query = $('#searchQuery').val();
            $.ajax({
                url: "/api/search",
                data: {query : query},
                type: 'GET',
                dataType: 'application/json',
                statusCode: {
                    200: function (queryResult) {
                        //I want to send queryResult to another view
                    },
                    404: function () {
                        alert("failure");
                    }
                }
            });
        });

你问这个问题是有充分理由的,你所描述的感觉很尴尬,事实上确实如此。点击WebAPI是一种很好的做法,因为你可以将搜索的负载保持得很小(只传递数据,而不传递HTML)。你真正想做的是不要请求另一个视图,即当statusCode为200时,你想做的就是在当前视图中的客户端呈现HTML。当然,这在JQuery中很容易完成,从您的代码片段来看,JQuery似乎已经在使用了。

是的,从我的搜索按钮点击ApiController确实有意义"

在您的搜索页面中添加一些JavaScript,它可以使用您从WebAPI返回的搜索结果数据动态更新页面的部分,以显示您想要显示的搜索结果不要再启动另一个web请求以获取另一个视图/页面

最新更新