2013-07-31 3 views
0

ASP.NET WebAPI를 배우기 시작 했으므로 둘 사이의 결혼 관계를 이해할 수 없습니다. 나는 다음과 같은 마크 업을 가진 Index.cshtml보기를 생성 :ASP.NET 웹 API로 인해 서버 호출이 중복됩니다.

브라우저가이보기를받을 때 기본적으로 브라우저로 전송됩니다이보기는하지만, 그것은 웹 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> 
} 
그 I 한정된. 그러나 그것은 나입니까, 아니면 데이터를 얻기 위해 불필요한 두 번째 호출을 보았습니다. 뷰가 마크 업을 보내고 데이터가 이미 마크 업에 임베딩되어있는 원래 MVC 방식 (WebAPI없이)을 고수하지 않는 이유는 무엇입니까?

여기서 두 번의 호출이 있는데, 하나는보기 용이고 다른 하나는 데이터 용입니다.이 작업이 실제로 더 효율적입니까, 아니면 여기에 뭔가 빠졌습니까?

답변

1

AJAX 요청을하기 전에보기가로드되어야합니다. 서버를 추가로 호출하지 않고 뷰에 데이터를로드하려면 AJAX 호출을 사용하지 않아야합니다. AJAX 호출은 일반적으로 서버에 전체 게시물을 다시 보낼 필요없이 즉석에서 페이지 내용을 업데이트하거나 서버에 데이터를 전송하는 데 사용됩니다. 강력하게 유형이 지정된 뷰를 사용하여 뷰에서 데이터를 임베드하거나 선택한 뷰를 사용하여 ViewBag에서 뷰를 채울 수 있습니다.

1

즉시 필요한 모든 데이터에 대해 보조 아약스 호출을하지 마십시오. 페이지를 서버 측에서 렌더링하는 동안 자바 스크립트 객체의 페이지에 리소스를 포함합니다. 모든 아약스는 사용자 상호 작용의 결과 여야합니다.

특히 데이터가 다른 서버 또는 응용 프로그램에서 온 경우 임베딩이 항상 쉽지는 않습니다.

1

아약스는 사용자 경험을 향상시킬 수도 있습니다. 어떤 이유로 든로드하는 데 10 초 걸리는 페이지가있는 경우 10 초 동안 빈 화면에서 계단을 볼 수 있습니까? 아니면 사용자 인터페이스를 불러 와서 데이터를로드하고 Ajax가 전화를 걸어 10 초를 기다리라는 페이지를 작성합니까?

+0

사용자 환경을 향상시키는 좋은 방법입니다. 좋은 지적! –

관련 문제