0

내가 nerddinner 튜토리얼에서 아이디어를 사용하고 내 애플 리케이션에 간단한 페이징 시스템을 설정 asp.net의 mvc3 응용 프로그램에서 페이징에 대한 라우팅을 설정하는 방법 :페이지가 매겨진 목록 클래스를 사용하여,

public class PaginatedList<T> : List<T> { 
     public int PageIndex {} 
     public int PageSize {} 
     public int TotalCount {} 
     public int TotalPages {} 

     public PaginatedList(IQueryable<T> source, int pageIndex, int pageSize){} 

     public bool HasPreviousPage {} 

     public bool HasNextPage {} } 

페이징을 작동하고, 내가이 컨트롤러 액션에서와 같이 LINQ2SQL를 통해 데이터베이스의 긴 테이블을 얻기 위해 그것을 사용하고 있습니다 : 내가 쿼리 유형을 사용하고 같이 페이징이 잘 작동

public ActionResult Index(int page=0) 
    { 
     const int pageSize = 10; 

     var source = repo.SvaMjesta(); 
     var paginatedList = new PaginatedList<Mjesto>(source, page, pageSize); 

     return View(paginatedList); 
    } 

, 내가 한 모든 페이지를 얻을 수 있습니다 o URL : /관리자/Mjesta? page = 2내가 피하고자하는 일, 그리고 같은 간단한 URL을 사용하고자하는 : /관리/Mjesta/페이지 내 AdminAreaRegistration.cs에서이 항목을 만든 목적으로/2

 context.MapRoute(
      "pMjesta", 
      "Admin/Mjesta/Page/{page}", 
      new {controller = "Mjesta", action = "Index"}); 

하지만 난 URL에 액세스하려고 할 때 다음과 같은 /관리/Mjesta/페이지/, 그것은 여전히 ​​내게 404 오류가 발생합니다 2.

내 아이디어는 처음에는 MapRouting에서 일종의 일반 페이징 엔트리를 빌드하는 것이 었습니다. 그래서 같은 부분 뷰를 사용하여 필자가 필요로하는 모든 목록에서 페이징 컨트롤을 렌더링 할 수 있지만 작동하도록 만들 수는 없었습니다 이 좀 더 구체적인 접근 방법을 시도했지만 컨트롤러를이 URL 요청에 응답 할 수는 없습니다.

아이디어 및/또는 제안 사항을 알려주십시오.

+0

또한 any1이 JS를 사용하지 않는 페이징 및 정렬을 추가하는보다 우아한 솔루션을 찾을 곳을 추천 할 수 있지만 쿼리 스트링을 사용하여 값을 고정시킵니다. – Zaak

답변

2

URL이 일치 할 수있는 다른 경로가 있습니까? 예를 들어

, 여전히 기본 영역 경로가있는 경우 :

context.MapRoute(
    "DefaultAreaRoute", 
    "Admin/{controller}/{action}/{id}", 
    new { controller = "Home", action = "Index", id = Url.Optional }); 

을하고 그것이 당신의 새로운 경로 앞에 나열되어, 원하는 URL이 일치 처음이 경로를 사용합니다.

+0

이것이 문제의 해결책이었습니다. 기본 경로는 실제로 페이징 URL과 일치했습니다. – Zaak

1
context.MapRoute(
     "pMjesta", 
     "Admin/Mjesta/Page/{page}", 
     new {controller = "Mjesta", action = "Index", page = "{page}"}); 
관련 문제