0

我开始学习 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>
}

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

我在这里看到两个调用,一个用于视图,另一个用于数据,这真的更有效还是我在这里遗漏了什么?

4

3 回答 3

1

The view must load before any AJAX requests can be made. If you want to load the data with the view without making an additional call to your server, you shouldn't use an AJAX call. AJAX calls are typically for updating page content on the fly or sending data to the server without needing to do a full post back to the server. You can embed the data from the view using a strongly typed view with the model of your choosing or you can populate the view from the ViewBag.

于 2013-07-31T13:37:04.803 回答
1

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

嵌入并不总是容易或可能的,尤其是当数据来自另一台服务器或应用程序时。

于 2013-07-31T17:01:48.090 回答
1

Ajax 还可以增强用户体验。如果我的页面需要 10 秒才能加载(无论出于何种原因),我是否让用户在空白屏幕上停留 10 秒?或者我是否编写一个页面来显示一个用户界面,说明它正在加载数据并让 Ajax 进行调用并等待 10 秒?

于 2013-07-31T17:10:45.283 回答