2013-07-31 3 views
0

Я начинаю изучать ASP.NET WebAPI, и я не могу понять, что брак между ними. Я создал представление Index.cshtml со следующей разметке:ASP.NET Web API вызывает повторный вызов сервера

<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), где представление отправляет разметку, а данные уже встроены в разметку?

Я вижу здесь два вызова, один для представления, а другой для данных, это действительно более эффективно или я что-то пропустил?

ответ

1

Представление должно загружаться до того, как могут быть сделаны любые запросы AJAX. Если вы хотите загрузить данные с видом без дополнительного вызова на свой сервер, вы не должны использовать вызов AJAX. AJAX-вызовы обычно предназначены для обновления содержимого страницы «на лету» или отправки данных на сервер, не требуя полного ответа на сервер. Вы можете вставлять данные из представления с помощью строго типизированного представления с выбранной вами моделью или вы можете заполнить представление из ViewBag.

1

Для любых данных, которые необходимы немедленно, не делайте вторичный вызов ajax. Внедрите ресурс на странице в объекте javascript при рендеринге страницы на стороне сервера. Любой аякс должен быть в результате взаимодействия с пользователем.

Внедрение не всегда легко или возможно, особенно если данные поступают с другого сервера или приложения.

1

Ajax также может улучшить пользовательский интерфейс. Если у меня есть страница, на которую требуется загрузить 10 секунд (по какой бы то ни было причине), разрешите ли я ступить на пустой экран в течение 10 секунд? Или я пишу страницу, в которой отображаются пользовательские интерфейсы, указывающие, что они загружают данные и позволяют Ajax вызывать вызов и ждать 10 секунд?

+0

Это отличный способ улучшить работу пользователей! Хорошая точка зрения! –