【发布时间】:2017-04-09 02:27:17
【问题描述】:
我正在制作一个类似图书馆的网站。在这个库中,一篇文章可以有一个类别,并且该类别最多可以有 2 个父类别,例如:“世界 > 国家 > 城市”。
我想将所有文章的所有视图显示都保留在一个名为 LibraryController 的控制器中。使用的 2 个操作是 Article(string id) 和 Category(string[] ids)
要查看名为“圣殿骑士团”的文章,用户必须输入:/library/article/the-templar-order
好的,现在是类别。我脑子里有两种方法,这个例子是查看“城市”类别:
- 简单方法:
/library/world-country-city - 我想要的那个:
/library/world/country/city - 我不想要的,因为它太笨拙了:
/library/category/world/country/city
但是对于如何创建一个需要 3 个参数且基本上没有操作的路由,我有点困惑。除了第一个参数“world”之外,其余的应该是可选的,像这样:"/library/world/" > "/library/world/country/" > "/library/world/country/city/"
那么我该如何创建这样的路线呢?
解决方案
RouteConfig.cs
// GET library/article/{string id}
routes.MapRoute(
name: "Articles",
url: "Library/Article/{id}",
defaults: new { controller = "Library", action = "Article", id = "" }
);
// GET library/
routes.MapRoute(
name: "LibraryIndex",
url: "Library/",
defaults: new { controller = "Library", action = "Index" }
);
// GET library/category/category/category etc.
routes.MapRoute(
name: "Category",
url: "Library/{*categories}",
defaults: new { controller = "Library", action = "Category" }
);
【问题讨论】:
标签: c# asp.net-mvc-5 asp.net-mvc-routing