我开始学习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),其中视图发送标记并且数据已经嵌入到标记中?
我在这里看到两个电话,一个用于观看,另一个用于数据,这是否真的更有效,或者我在这里遗漏了什么?
答案 0 :(得分:1)
必须先加载视图,然后才能生成任何AJAX请求。如果要在不对服务器进行额外调用的情况下使用视图加载数据,则不应使用AJAX调用。 AJAX调用通常用于动态更新页面内容或将数据发送到服务器,而无需完整回发到服务器。您可以使用您选择的模型使用强类型视图嵌入视图中的数据,也可以从ViewBag填充视图。
答案 1 :(得分:1)
对于立即需要的每个数据,请不要进行辅助ajax调用。在服务器端呈现页面时,将资源嵌入到javascript对象中的页面中。任何ajax都需要是用户交互的结果。
嵌入并不总是容易或可能,特别是如果数据来自其他服务器或应用程序。
答案 2 :(得分:1)
Ajax还可以增强用户体验。如果我有一个需要10秒钟加载的页面(无论出于何种原因),我是否让用户在空白屏幕上楼梯10秒钟?或者我是否编写了一个页面,其中显示了用户界面,说明它正在加载数据并让Ajax拨打电话并等待10秒钟?