ASP.NET Web API导致重复的服务器调用

时间:2013-07-31 02:25:05

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

我开始学习ASP.NET WebAPI,我似乎无法理解两者之间的结合。我使用以下标记创建了一个Index.cshtml视图:

<div>
<div>
    <ul data-role="listview" data-inset="true" data-filter="true" data-filter-placeholder="Search..." id="items">
    </ul>
</div>         
</div>

@section scripts {
<script>
    var apiUrl = '/api/items';

    $(document).ready(function () {
        // Send an AJAX request
        $.getJSON(apiUrl)
            .done(function (data) {
                // On success, 'data' contains a list of items.
                $.each(data, function (key, item) {
                    // Add a list item.
                    $("ul").append("<li><a href='acura.html'>" + item.ItemCode + "</a></li>").listview("refresh");
                });
            });
    });
</script>
}

此视图基本上被发送到浏览器,但是当浏览器收到此视图时,它会进行ajax调用以使用我定义的Web API获取数据。但这是我还是我在这里看到不必要的第二次电话来获取数据。为什么我们不坚持最初的MVC思维方式(没有WebAPI),其中视图发送标记并且数据已经嵌入到标记中?

我在这里看到两个电话,一个用于观看,另一个用于数据,这是否真的更有效,或者我在这里遗漏了什么?

3 个答案:

答案 0 :(得分:1)

必须先加载视图,然后才能生成任何AJAX请求。如果要在不对服务器进行额外调用的情况下使用视图加载数据,则不应使用AJAX调用。 AJAX调用通常用于动态更新页面内容或将数据发送到服务器,而无需完整回发到服务器。您可以使用您选择的模型使用强类型视图嵌入视图中的数据,也可以从ViewBag填充视图。

答案 1 :(得分:1)

对于立即需要的每个数据,请不要进行辅助ajax调用。在服务器端呈现页面时,将资源嵌入到javascript对象中的页面中。任何ajax都需要是用户交互的结果。

嵌入并不总是容易或可能,特别是如果数据来自其他服务器或应用程序。

答案 2 :(得分:1)

Ajax还可以增强用户体验。如果我有一个需要10秒钟加载的页面(无论出于何种原因),我是否让用户在空白屏幕上楼梯10秒钟?或者我是否编写了一个页面,其中显示了用户界面,说明它正在加载数据并让Ajax拨打电话并等待10秒钟?