2017-04-03 93 views
0

問題是我使用一個列表來填充一個html頁面,但我想實現分頁。現在第一頁呈現沒有問題,但只要我按第二頁按鈕或任何其他的事情,我只是得到一個空白頁,就好像沒有任何事情發生。c#asp.net第二頁不顯示

(我會給我的控制器的片導致作息不真的nenecessary)

控制器:如果需要對

@Html.PagedListPager((IPagedList)ViewBag.links, page => Url.Action("RequestLinks", new { page })) 

任何信息

//input is a textfield from the webview which hold the url I want to use 
public ActionResult RequestLinks(FormCollection input, int? page = null) { 
List<string> links; 

//FindLinks will give back a list of links retrieved from an url 
links = FindLinks(input["url"].ToString(), download); 
int pageSize = 25; 
int pageNumber = page ?? 1; 
ViewBag.links = links.ToPagedList(pageNumber, pageSize); 

return View(links.ToPagedList(pageNumber, pageSize)); 
} 

的Html尋呼機解釋或幫助隨時問。

編輯:

或許這是與路線等?

+0

ToPagedList函數將是相關的。 –

+0

@SamAxe它是PagedList庫的一部分。它將我的正常列表轉換爲IEnumerable。 – tribeldragon

回答

0

答案#1:

我認爲,當你使用Url.Action(..)你需要爲每個傳遞路線值參數提供的名稱。

例如:

@Html.PagedListPager((IPagedList)ViewBag.links, pageNumber => Url.Action("RequestLinks", new { page = pageNumber })) 

在這裏,我使用pageNumber是從謂詞的變量的名稱,並明確命名page作爲路徑參數我設置的名稱,假設所需的動作是:

public ActionResult RequestLinks(int? page = null) { 
    // ... 
} 

答案#2:

您的操作要求URL始終通過以下載鏈接,而在您當前的示例中不是。當您關注鏈接時,FormCollection input將不存在,它僅在最初的POST之後。

你應該能夠改變行動:

public ActionResult RequestLinks(string url, int? page = null) { 

    // Store it. 
    ViewBag.url = url; 

    // Everything else 
    // ... 

} 

然後在您的視圖:

@Html.PagedListPager((IPagedList)ViewBag.links, pageNumber => Url.Action("RequestLinks", new { url = ViewBag.url, page = pageNumber })) 

這(做一些假設)應該產生這樣的聯繫:

/{controller}/RequestLinks?url=http://google.com&page=3 
+0

可悲的是,這對我不起作用,結果是一樣的。看起來你只是在兩者之間增加了一個與另一個完全相同的值。 – tribeldragon

+0

@tribeldragon您可以將控制器操作方法簽名添加到您的問題中嗎? –

+0

希望我添加了正確的東西。 – tribeldragon