c#asp.net第二页没有显示

时间:2017-04-03 08:31:16

标签: c# asp.net paging

问题是我使用列表来填充html页面,但我想实现分页。现在第一页渲染没有问题但是只要我按下第二页按钮或任何其他按钮,我就会得到一个空白页面,好像什么也没发生。

(我会给我的控制器的部分因为剩下的不是真的不必要)

控制器:

//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寻呼机:

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

如果需要更多信息来解释或帮助随时询问。

修改

也许它与路线等有关?

1 个答案:

答案 0 :(得分:0)

回答#1:

我认为当您使用Url.Action(..)时,您需要为您传递的每个路线值参数提供名称。

例如:

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

这里我使用pageNumber作为谓词中变量的名称,并明确地将page命名为路由参数I的设置名称,假设期望的行动是:

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