2011-09-15 2 views
13

this question을 확인하고 초기 문제를 해결했습니다. 하지만 사용자가 링크를 클릭 할 때만 부분 뷰를 렌더링하고 싶을 때, 페이지가로드 될 때 부분 뷰를 렌더링하고 부분 뷰가로드되는 동안 진행률 표시기를 표시 할 수 있습니다.아약스를 사용하여 부분 뷰 렌더링

어떻게 달성할까요?

고맙습니다.

답변

43

(JQuery와 아약스 작업을 사용하여) 그 다음과 같이 입력하십시오 :

public ActionResult Create() 
{ 
    var model = new MyModel(); 

    if (Request.IsAjaxRequest()) 
    { 
      return PartialView("_Partial", model.PartialModel); 
    } 
    else 
    { 
      return View(model); 
    } 
} 

다음 페이지에서 like :

$(function(){ 

    $(document).ajaxStart(function() { 
     //show a progress modal of your choosing 
     showProgressModal('loading'); 
    }); 
    $(document).ajaxStop(function() { 
     //hide it 
     hideProgressModal(); 
    }); 

    $.ajax({ 
      url: '/controller/create', 
      dataType: 'html', 
      success: function(data) { 
      $('#myPartialContainer').html(data); 
      } 
    }); 
}); 
7

초기 페이지에서 @Html.Partial(...)을 작성하여 렌더링 할 수 있습니다.

+0

Think @ Html.Parital은 Ajax, jquery에서 사용할 수 없습니다. – Shan

+0

@Shan : 서버 쪽입니다. 그것은 그것과 아무 상관이 없습니다. – SLaks

+0

@SLaks, 메인 뷰를 표시 한 후에 표시 할 부분 뷰가 필요해 보이는 것 같습니다 (오랜 시간의 초기 처리를 피하기 위해). 내가 아는 한 @Html.Partial()은 메인 뷰와 함께 서버에서 처리됩니다. 그래서 그것은 인간의 문제를 해결하지 못합니다. 나는 또한 처음에 질문에 속았다. – cnom

8

기본 페이지에 컨트롤러

public ActionResult GetModule(string partialName){ 
    return PartialView("~/Views/Shared/"+partialName); 
} 

당신은 당신이 ActionMethod을 만들 수있는 페이지를로드 한 후 아약스를 통해 부분 뷰를로드하려면

<div id='mod1'>Loading...</div> 
<script type="text/javascript"> 
      $("#mod1").load("/ControllerName/GetModule?partialName=test1");   
</script> 
+0

Partial View의 파일 형식을 지정해야합니까? .cshtml과 같습니다. –