2012-06-20 4 views
-1

나는 http://nuget.org/packages/PagedList.Mvc아약스에만 PagedList.MVC와 ASP.NET MVC에서 페이지 매김 또는 유사한

내가 내 컨트롤러 내부의 페이지 된 목록을 만들 내 ASP.NET MVC 응용 프로그램에서 출력 페이지 매김 링크를 troygoode의 PagedList를 사용하고 그것을 통과 @Html.PagedListPager를 사용하여 페이지 매김 된 링크에 대한 html을 생성하는보기로 이동합니다. 이/스토어와 같은 링크의 무리를 생성? = 즐 & 페이지 = 1/스토어를 검색? 검색 = 즐 & 페이지 = 2 등

그것은 꽤 잘 HTML 가능한 분리해야 자바 스크립트 코드가 합의한다 그래서 별도의 자바 스크립트 파일에있는 모든 페이지 번호가 매겨진 링크에 클릭 핸들러를 추가합니다. 그리고 이러한 클릭 핸들러 내에서 페이지 X를 얻기 위해 Ajax 요청을 수행합니다.이 요청은 서버 측 렌더링 된 다음 클라이언트 페이지의 div에 덤프됩니다 (페이지가 매겨진 새로운 링크 포함).

모든 요청마다 페이지가 매겨진 새로운 링크가 생성되므로 새로운 검색이 수행되거나 페이지가 변경 될 때마다 이러한 클릭 핸들러를 추가합니다. 저는 Ajax의 OnSuccess 이벤트 핸들러에서이 작업을 수행합니다.

위대한 작품입니다. 사용자는 자바 스크립트가 비활성화되어 있어도 일반 href로 돌아가므로 페이지를 탐색 할 수 있습니다. 그것의 우아한 퇴화는 최고입니다.

그러나 사용자가 작업을 기록 할 때 저장소를 선택해야하는 앱의 다른 부분이 있으며 엄격하게 아약스 만 사용됩니다. 이 경우 페이징 된 링크에 대한 href가 'javascript : void (0);'가되도록하고 싶습니다. 문제는 이러한 링크에 대한 클릭 핸들러를 추가 할 때 아약스 호출이 게시되어야하는 URL을 알 수있는 방법이 없다는 것입니다.

"1", "2", "3"등 링크의 텍스트 값을 사용할 수 있다고 가정하지만 "다음"및 "이전"링크는 어떻게됩니까? 게다가 이런 식으로 잘못하는 것 같아요.

이상적으로, PagedList.MVC에는 각 페이지 링크에 data-page = "X"속성을 넣을 수있는 옵션이 있습니다. 그런 다음 클릭 핸들러에서이 옵션을 사용할 수 있지만 이러한 옵션은 존재하지 않습니다. 이러한 인기있는 .net 확장을 통해 필자는 제안 된 솔루션이 이상적이거나 선호되는 솔루션이 아니라고 생각하게되었습니다.

내 접근 방식이 논리적입니까? 아니면 이것을하는 더 좋은 방법이있을 것입니다. PageList.MVC의 표준 도우미 대신 자신의 도우미를 작성해야합니까? 나는 전에 이것을 해본 사람으로부터 약간의 지침이 필요하고 그들의 접근 방식에 자신감을 가지고 있습니다.

답변