2014-04-05 4 views
1

둘러 보았지만 항목 목록에 페이지 매김 예제 만 있습니다. 그러나 항목의 자세한 페이지를 페이지 할 수있는 예제를 원합니다. 예 :세부 정보 페이지 매김 Page

표 A의 모든 항목을 나열하고 각 항목에 "세부 정보보기"단추가있는 색인 페이지가 있습니다.

"세부 정보보기"버튼을 클릭하면 세부 정보 페이지로 이동합니다 (이 기능이 작동합니다).

그리고 사용자가 "다음"/ "이전"을 클릭하여 다음 항목의 세부 정보 페이지를 볼 수있게하고 싶습니다.

아무에게도 예제를 제공하거나 링크하는 방법에 대한 예제를 제공 할 수 있습니까?


업데이트합니다 2014년 4월 6일

내가 Jasen와 에산 사자 드 준 것을 모두 제안을 결합하기 위해 노력하고있어,하지만 난 여전히 붙어있어. 그래서이 코드가 설명을 명확하게하는 데 도움이되기를 바랍니다.

나는 프로젝트 테이블과 작업 테이블을 가지고 있습니다. 프로젝트 테이블은 0 일 수 있습니다. * 작동하지만 작업 테이블은 1 개의 프로젝트에만 속할 수 있습니다.

프로젝트 색인 페이지에서 모든 프로젝트는 프로젝트 순서 (int projectOrder)로 나열됩니다. 그리고 "세부 사항보기"를 클릭하면 해당 프로젝트의 모든 정보와 해당 프로젝트에 속한 작업 테이블의 작업을 가져 오는 프로젝트 세부 정보 페이지로 이동합니다. 세부 페이지에서 "다음/이전"버튼을 클릭하면 다음/이전 프로젝트 세부 정보 페이지로 이동합니다 (프로젝트 주문 별).

는 지금은이 :

:: WORK 컨트롤러 ::

myContext myDB = new myContext(); 

    public ActionResult Index() 
    { 
     var projects = myDB.Projects.OrderBy(p => p.projectOrder).Include("Works"); 
     return View(projects); 
    } 

    public ActionResult Projects(string project, int? pOrder) 
    { 
     var projectView = myDB.Projects.Include("Works") 
      .SingleOrDefault(p => p.projectName == project); 

     //var i = 1; 
     //int projOrder = projectView.projectOrder; 
     //int nextPO = projOrder + i; 
     //var stuff = myDB.Projects.SingleOrDefault(j => j.projectOrder == pOrder); 

     return View(projectView); 
    } 

4 개 라인 주석 I 메뉴 명령에 의해 다음 프로젝트를 얻기 위해 노력하는 사람이었다 - 그러나 그것은이다 작동 안함.

:: VIEW - 일 - 지수() :

@model IEnumerable<myStuff.Model.Project> 

@foreach (var project in Model) 
{ 
    @project.projectName 
    @Html.ActionLink("View Details", "Projects", "Work", new { project = project.projectName }, null) 
} 

:: VIEW - 일 - 프로젝트() :

@model myStuff.Model.Project 

@Model.projectName 
@Html.ActionLink("Next >", "Projects", new { pOrder = Model.projectOrder}) 

나는 모든 목록 해요 다른 페이지에서도 (Work 테이블에서) 작업하고, 프로젝트의 세부 정보 페이지로 연결되는 링크가 있습니다.

projectOrder를 1 씩 늘리거나 줄이려고했지만이 작업을 수행하지 않습니다. 그래서 나는 누군가가 나를 도울 수 있기를 바라고 있습니다.

다시 한 번 감사드립니다.

+0

당신은 그 효과를 얻을 수 없겠죠 단일 항목에 page_ 당 _items을 설정하는 경우 당신은 다르게 아무것도하지 않고 원하는가? – Jasen

+0

그 일을 생각했지만 테이블 A는 다른 테이블의 관련 데이터를 가지고 있습니다 (테이블 B는 자식). 표 B에는 자체 페이지가 있으며 표 A의 상세 페이지에 대한 링크가 있습니다. 링크가 작동하는지 모르겠습니다. 게다가, 표 A의 항목을 "page1, page2, etc."와 같은 URL로 나열하면 검색 엔진에 적합하지 않습니다. 그래서, 이것을 성취 할 다른 방법이 있는지 궁금합니다. – jannn

+0

"page1"에 관하여 : 내가 작업 한 대부분의 페이징 처리자는 해당 텍스트를 삭제하거나 모두 변경할 수 있습니다. – Jasen

답변

0

다음은 갈 수 있고 접근 방식 :

는 다음 세부 사항을 하나의 프로젝트 당신에게

public ActionResult Detail(int id) 
{ 
    var project = Projects.Where(p => p.Id == id).FirstOrDefault(); 
    return View(project); 
} 

을 제공하는 컨트롤러를 설정하고 이전 단순히 Detail(i + 1)Detail(i - 1)입니다. ID에 간격이있을 수 있으므로 증가/감소하지 않습니다. 대신 원본과 함께 앞을 찾으십시오.

컨트롤러 액션이된다 :

public ActionResult Detail(int id) 
{ 
    var project = Projects.Where(p => p.Id == id).FirstOrDefault(); 
    var prevId = projectsRepository.GetPrev(project.Id); 
    var nextId = projectsRepository.GetNext(project.Id); 
    var projectVM = new ProjectVM { 
     Project = project, 
     PrevId = prevId, 
     NextId = nextId 
    }; 
    return View(projectVM); 
} 

이 내가 int? GetPrev()int? GetNext()을 제공하기 위해 projectsRepository를 만든 당신이 예에서보기

@Html.ActionLink("prev", "Detail", new { id = Model.PrevId }) 
@Html.ActionLink("next", "Detail", new { id = Model.NextId }) 

링크를 제공합니다. 당신은 구현을 제공해야하지만, 여기에 시작입니다 수 있습니다 :

+0

도움 주셔서 감사합니다! 이걸 시험해 볼게. – jannn