2013-02-07 2 views
0

MVC4에서 새 웹 사이트를 설정하려고합니다. 어떤 상황에서도 전체 페이지 새로 고침을 피하려고합니다. 목표는 사용자가 사이트를 탐색하는 동안 그대로 유지되는 기본 레이아웃에 미디어 플레이어를 배치하는 것입니다.ASP.NET MVC 4 + jQuery 주소 플러그인 = 렌더링 문제

딥 링크를 사용하려면 jquery 주소 플러그인을 사용하기로 결정했습니다. 액션이 아약스를 통해 호출 된 경우 전체보기가 아닌 부분보기를 반환하도록 컨트롤러에 규칙을 설정했습니다. 또한 요청을 방지하고 대신 ajax 요청을 수행하고 div 내에서 결과를 제공하는 주소 플러그인을 설정합니다.

서버 측

return Request.IsAjaxRequest() ? (ActionResult) PartialView() : View(); 

클라이언트 측

$.address.state('/').init(function (event) { 
     $('a').address(); 
    }); 

    $.address.change(function (event) { 
     $.ajax({ 
      cache: false, 
      url: event.value, 
      success: ajaxSuccess 
     }); 
    }); 

    function ajaxSuccess(data, status) { 
     $("#mainContent").html(data); 
    } 

문제 : 뷰가 같은 부분에 제공됩니다 때, 내보기 내부에 @section을 렌더링 할 수 없습니다.

추신 : 플러그인을 눈에 거슬리지 않게 사용하고 싶습니다. 자바 스크립트가없는 사람이라면 미디어 플레이어를 새로 고침해도 웹 사이트를 계속 탐색 할 수 있습니다.

답변

0

스왑 가능한 콘텐츠가 별도의 작업에 포함되도록 페이지를 다시 디자인해야합니다. 항상 부분적으로 볼 수 있습니다. 그런 식으로 변경되는 내용은 주 콘텐츠 외부에 있습니다. 주 콘텐츠는 섹션을 가질 수 있으며 하위 콘텐츠는 요청이 발생할 때 대체되는 콘텐츠입니다.

+0

답장을 보내 주셔서 감사합니다. 컨트롤러 조건에 대한 부분 뷰 문제를 해결했습니다. 문제는 뷰 내부에 존재하거나 존재하지 않는 @ section의 렌더링과 관련이 있으며, 메인 레이아웃은 뷰가 렌더링되는 div가 아닌 웹 사이트 내의 다양한 위치에서 렌더링합니다. – DrinkBird