如何在带有其他参数的路由上实现分页?
How do I implement paging on a route with other parameters?
我知道在只有一条路由的情况下,如何在路由上实现寻呼,例如/Dinners/Page/1。我的问题是我有一个文章列表。这些文章位于类别和子类别中。
如果没有指定 category/subcategory 我想 return 所有文章。
如果仅提供类别,我将提供该类别中的所有文章
如果提供了类别和子类别,我只需要子类别中的文章。
我用这个没问题。然后我想添加分页。我想要一条可以执行以下操作的路线:
domain.com/6 - 转到所有文章的第 6 页
domain.com/category/2 - 转到类别文章的第 2 页
domain.com/category/subcategory/3 - 转到子类别文章的第 3 页
我无法正常工作,因为第一个示例正在寻找类别 6,第二个示例正在寻找类别 2。我尝试添加一个约束,希望数值将归因于页面。不开心。
另外,我想做这个服务器端。
有什么想法吗?这是我的 RouteConfig 中的路线:
routes.MapRoute(
name: "Category",
url: "{category}/{subcategory}/{page}",
defaults: new { controller = "Articles", action = "Index", category= UrlParameter.Optional, subcategory = UrlParameter.Optional, page = UrlParameter.Optional }
//, constraints: new { page = @"\d+" }
);
将页码作为查询字符串参数传递,例如:category/subcategory?page=1
.
或者像这样改变你的路线,
routes.MapRoute(
name: "Category",
url: "{controller}/{action}/{category}/{subcategory}/{page}",
defaults: new { controller = "Articles", action = "Index", category= UrlParameter.Optional, subcategory = UrlParameter.Optional, page = UrlParameter.Optional }
//, constraints: new { page = @"\d+" }
);
希望这个有用,谢谢。
好的。我把路由玩了一下,添加了三个路由来替换原来的。
第一个用分页捕获视图。如果没有提供分页,我只显示第一页。第二条路由是带分页的主类。
第三条路线如果有子类就覆盖掉。这现在就像一个魅力。 :)
以下是我的路线,如果你想知道我到底做了什么:
routes.MapRoute(
name: "Paged",
url: "{page}",
defaults: new { controller = "Articles", action = "Index", page = UrlParameter.Optional },
constraints: new { page = @"\d+" }
);
routes.MapRoute(
name: "PagedCategory",
url: "{category}/{page}",
defaults: new { controller = "Articles", action = "Index", category = UrlParameter.Optional, page = UrlParameter.Optional }
//, constraints: new { page = @"\d+" }
);
routes.MapRoute(
name: "PagedSubCategory",
url: "{category}/{subcategory}/{page}",
defaults: new { controller = "Articles", action = "Index", category = UrlParameter.Optional, subcategory = UrlParameter.Optional, page = UrlParameter.Optional }
//, constraints: new { page = @"\d+" }
);
我知道在只有一条路由的情况下,如何在路由上实现寻呼,例如/Dinners/Page/1。我的问题是我有一个文章列表。这些文章位于类别和子类别中。
如果没有指定 category/subcategory 我想 return 所有文章。 如果仅提供类别,我将提供该类别中的所有文章 如果提供了类别和子类别,我只需要子类别中的文章。
我用这个没问题。然后我想添加分页。我想要一条可以执行以下操作的路线: domain.com/6 - 转到所有文章的第 6 页 domain.com/category/2 - 转到类别文章的第 2 页 domain.com/category/subcategory/3 - 转到子类别文章的第 3 页
我无法正常工作,因为第一个示例正在寻找类别 6,第二个示例正在寻找类别 2。我尝试添加一个约束,希望数值将归因于页面。不开心。
另外,我想做这个服务器端。
有什么想法吗?这是我的 RouteConfig 中的路线:
routes.MapRoute(
name: "Category",
url: "{category}/{subcategory}/{page}",
defaults: new { controller = "Articles", action = "Index", category= UrlParameter.Optional, subcategory = UrlParameter.Optional, page = UrlParameter.Optional }
//, constraints: new { page = @"\d+" }
);
将页码作为查询字符串参数传递,例如:category/subcategory?page=1
.
或者像这样改变你的路线,
routes.MapRoute(
name: "Category",
url: "{controller}/{action}/{category}/{subcategory}/{page}",
defaults: new { controller = "Articles", action = "Index", category= UrlParameter.Optional, subcategory = UrlParameter.Optional, page = UrlParameter.Optional }
//, constraints: new { page = @"\d+" }
);
希望这个有用,谢谢。
好的。我把路由玩了一下,添加了三个路由来替换原来的。
第一个用分页捕获视图。如果没有提供分页,我只显示第一页。第二条路由是带分页的主类。
第三条路线如果有子类就覆盖掉。这现在就像一个魅力。 :)
以下是我的路线,如果你想知道我到底做了什么:
routes.MapRoute(
name: "Paged",
url: "{page}",
defaults: new { controller = "Articles", action = "Index", page = UrlParameter.Optional },
constraints: new { page = @"\d+" }
);
routes.MapRoute(
name: "PagedCategory",
url: "{category}/{page}",
defaults: new { controller = "Articles", action = "Index", category = UrlParameter.Optional, page = UrlParameter.Optional }
//, constraints: new { page = @"\d+" }
);
routes.MapRoute(
name: "PagedSubCategory",
url: "{category}/{subcategory}/{page}",
defaults: new { controller = "Articles", action = "Index", category = UrlParameter.Optional, subcategory = UrlParameter.Optional, page = UrlParameter.Optional }
//, constraints: new { page = @"\d+" }
);