c#asp.net第二页不显示

问题描述:

问题是我使用一个列表来填充一个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

答案#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