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

时间:2012-09-03 00:48:12

标签: asp.net-mvc asp.net-web-api

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

我的_Layout.cshtml页面上也有一个搜索表单。当用户搜索任何东西时,我有一个成功点击我的ApiController方法并返回JSON的ajax,但我不确定如何处理它。我想重定向到/ SearchResults /并显示结果,但我不禁觉得我已经不再使用WebApi了,我应该把它剪掉。

从搜索按钮点击ApiController是否合理,然后将结果发送到另一个View?如何重定向到其他视图?

$('#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");
                    }
                }
            });
        });

1 个答案:

答案 0 :(得分:0)

你问这个问题,并且有充分的理由,你描述的东西感觉很尴尬,实际上它是。点击WebAPI是一种很好的做法,因为您保持搜索的有效负载非常小(仅传递数据而不是HTML)。您真正想要做的是,不要求另一个视图,即当statusCode为200时,您想要做的是在当前视图内的客户端上呈现HTML。这当然很容易在JQuery中完成,你的代码片段就像你已经在使用它一样。

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

在搜索页面中添加一些JavaScript,它会动态更新页面部分,并显示您希望从WebAPI返回的搜索结果数据中显示的搜索结果。 请勿触发其他网页请求以获取其他视图/页面。