2014-04-05 169 views
1

我環顧四周,只發現了項目列表的分頁示例。但我希望該項目的詳細頁面的示例是可分頁的。例如:分頁詳細信息頁面

我有一個索引頁面,列出了表A中的所有項目,每個項目都有一個「查看詳細信息」按鈕。

當用戶點擊「查看詳細信息」按鈕,它把他們帶到它的詳細頁面(我得到了這個工作)。

我希望用戶能夠點擊「下一步」/「上一步」查看下一個項目的詳細信息頁面。

任何人都可以給我一個例子或如何做到這一點的例子的鏈接?


更新:2014年4月6日

我想這兩個建議,賈森和伊赫桑薩賈德結合了,但我仍然堅持。所以我希望這些代碼能夠使描述更加清晰。

我有一個項目表和一個工作表。 工程表可以有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行註釋掉是我試圖通過菜單爲了獲得下一個項目的 - 但它的不工作。

:: 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}) 

我列出了所有在另一個頁面上工作(來自工作表),他們有鏈接到他們項目的詳細頁面。

我試圖增加/減少projectOrder 1,但我沒有這樣做的權利。所以我希望有人能幫助我。

再次感謝您的時間!

+0

如果您設置每個page_的_items到一個項目是不是會得到的效果你渴望沒有做任何不同的事情? – Jasen

+0

我想過這樣做,但表A有來自其他表的相關數據(表B是孩子)。表B有其自己的頁面,並鏈接到表A的詳細頁面。我不知道鏈接是否有效。此外,列出表格的項目與URL爲「page1,page2等」,這將不利於搜索引擎。所以,我想知道是否有另一種方法來實現這一點。 – jannn

+0

關於「page1」:我曾與大多數paginators允許您刪除該文本或完全更改它。 – 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); 
} 

這讓你對你的看法

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

的鏈接在這個例子中,我已經取得了一個projectsRepository提供int? GetPrev()int? GetNext()。你必須提供實現,但是這裏有一個開始:

+0

謝謝你的幫助!我會測試一下。 – jannn

相關問題