2014-01-13 2 views
0

부분 뷰가있는 기본 뷰가 있습니다. 부분보기는 페이징을 허용하고 부트 스트랩을 사용하고 있습니다.부분 뷰에서 페이징

컨트롤러 :

public ActionResult Main() 
{ 
    return View(); 
} 

//[ChildActionOnly] 
public ActionResult _Partial(int page) 
{ 
    Model = //returns records for requested page 
    return View(Model); 
} 

보기 : 나는 그것을 페이징에 [ChildActionOnly] 그래서 제거

<ul class="pagination"> 
    @for (int i = 1; i <= model.TotalPages; i++) 
    { 
     <li>@Html.ActionLink(i.ToString(), "_Partial", new { page = i, })</li> } 
    } 
</ul> 

내 문제는 페이징 작동하지만, 페이지를 선택하면 직접 _Partial 액션을 호출한다 (이후 Main View 없이도 Partial View 만로드합니다. 따라서 Main View 또는 형식에 의해 제공되는 '프레임'이 누락됩니다.

다른 접근 방식을 따르고 있습니까, 아니면 부분 동작을 호출하는 방법과 기본 동작입니까? 나는 내가 좋아하는 뭔가를 좋아하는 것 같아요

...

<li>@Html.ActionLink(i.ToString(), "Main + _Partial", new { page = i, })</li> 

또는 어떻게 얻을 수 부트 스트랩 페이징 부분보기에서 작업 (나는 아약스 경로를 가고 싶지 않아)?

답변

0

아약스를 사용하지 않으려면 전체 페이지를 반환해야합니다. 여기에 귀하의 경우에 대한 예 :

컨트롤러 :

public ActionResult Main() 
{ 
    return View(); 
} 

public ActionResult SomeAction(int page) //Name this as your like 
{ 
    // I use viewbag here for convenience, 
    //you should consider to create new view model if necessary. 
    ViewBag.PageNum = page; 

    return View(); 
} 

//[ChildActionOnly] 
public ActionResult _Partial(int page) 
{ 
    Model = //returns records for requested page 
    return View(Model); 
} 

보기 "SomeAction.cshtml"

@*Put your Main page content here*@ 

@Html.Action("SomeAction", "YourControllerName", new { page = ViewBag.PageNum }) 

@*Put your Main page content here*@ 

그리고 귀하의 페이지 매김을 변경해야합니다

<ul class="pagination"> 
    @for (int i = 1; i <= model.TotalPages; i++) 
    { 
     <li>@Html.ActionLink(i.ToString(), "SomeAction", new { page = i, })</li> } 
    } 
</ul> 

에 보관 내가 "SomeAction"을 만든 이유는 "Main"액션이 정확히 무엇을하는지 모르기 때문입니다. "Main"이 단순히 첫 번째 페이지 인 경우 "SomeAction"과 "Main"을 하나로 병합해야합니다.

public ActionResult Main(int page = 1) 
{ 
    ViewBag.PageNum = page; 

    return View(); 
} 
+0

정확합니다. 나는 부분 행동을 부르면 안된다. 나는 처음에는 내 자신의 문제를 오해했다. 3 개의 부트 스트랩 탭이있는 기본보기가 있으며 각 탭에는 부분보기가 있습니다. 각 탭에는 페이징이 있습니다. 문제는 탭 2에서 페이지를 변경하면 기본보기가로드되고 탭 2가 활성 탭이어야한다는 것을 인식하지 못하는 것입니다. 나는 자바가 필요하다고 생각하지만, 별도의 질문을 게시 할 것이다. 게시 된 원래 질문에 답하기 때문에 답변을 올바르게 표시했습니다. – Basquiat

관련 문제