如何设置路由在asp.net MVC3应用程序分页
问题描述:
我已经设置了简单的寻呼系统在我的应用程序,使用来自的NerdDinner教程的理念,采用分页列表类:如何设置路由在asp.net MVC3应用程序分页
public class PaginatedList<T> : List<T> {
public int PageIndex {}
public int PageSize {}
public int TotalCount {}
public int TotalPages {}
public PaginatedList(IQueryable<T> source, int pageIndex, int pageSize){}
public bool HasPreviousPage {}
public bool HasNextPage {} }
分页工作,我用它来得到通过LINQ2SQL数据库中的长条桌,在此控制器操作:
public ActionResult Index(int page=0)
{
const int pageSize = 10;
var source = repo.SvaMjesta();
var paginatedList = new PaginatedList<Mjesto>(source, page, pageSize);
return View(paginatedList);
}
分页工作正常,我可以为我使用的查询类型得到任何页面,只要o URL:/Admin/Mjesta?page = 2
这事情我想避免的,并想用简单的URL,如:/管理/ Mjesta /页/ 2
要为此我在AdminAreaRegistration.cs做出此项
context.MapRoute(
"pMjesta",
"Admin/Mjesta/Page/{page}",
new {controller = "Mjesta", action = "Index"});
但是,当我尝试访问URL如/Admin/Mjesta/Page/2,它仍然会引发404错误。
我的想法是首先在MapRouting中创建一些通用的分页条目,这样我就可以使用相同的分部视图来呈现每个列表的分页控件,但是由于我无法使其工作我试过这个更具体的方法,但我仍然无法让控制器对这个URL请求做出反应。
任何想法和/或建议吗?
答
您还有该地区的其他路线,该网址可以匹配?
举例来说,如果你仍然有默认的区域路线:
context.MapRoute(
"DefaultAreaRoute",
"Admin/{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = Url.Optional });
,这是你的新航线上市之前,您的首选网址将匹配以及第一次使用这条路线。
+0
这是问题的解决方案,默认路由实际上与分页URL相匹配。 – Zaak 2011-04-30 17:16:57
答
context.MapRoute(
"pMjesta",
"Admin/Mjesta/Page/{page}",
new {controller = "Mjesta", action = "Index", page = "{page}"});
此外,如果有的话1可以推荐在哪里寻找更优雅的解决方案来添加不使用JS的分页和排序,但使用查询字符串来保存值。 – Zaak 2011-05-01 11:16:15