c# asp.net 第二页未显示
c# asp.net second page not showing
问题是我用一个列表来填充一个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:
我认为当您使用 Url.Action(..)
时,您需要为您传递的每个路由值参数提供名称。
例如:
@Html.PagedListPager((IPagedList)ViewBag.links, pageNumber => Url.Action("RequestLinks", new { page = pageNumber }))
这里我使用 pageNumber
作为谓词变量的名称,并明确命名 page
作为我正在设置的路由参数的名称,假设所需的操作是:
public ActionResult RequestLinks( int? page = null ) {
// ...
}
答案 #2:
您的操作要求始终传递 URL 才能下载 link,而在您当前的示例中则不是。当您关注 link 时,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 }))
哪个(做出一些假设)应该生成 link 如下:
/{controller}/RequestLinks?url=http://google.com&page=3
问题是我用一个列表来填充一个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:
我认为当您使用 Url.Action(..)
时,您需要为您传递的每个路由值参数提供名称。
例如:
@Html.PagedListPager((IPagedList)ViewBag.links, pageNumber => Url.Action("RequestLinks", new { page = pageNumber }))
这里我使用 pageNumber
作为谓词变量的名称,并明确命名 page
作为我正在设置的路由参数的名称,假设所需的操作是:
public ActionResult RequestLinks( int? page = null ) {
// ...
}
答案 #2:
您的操作要求始终传递 URL 才能下载 link,而在您当前的示例中则不是。当您关注 link 时,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 }))
哪个(做出一些假设)应该生成 link 如下:
/{controller}/RequestLinks?url=http://google.com&page=3