多参数MVC路由

时间:2016-11-24 17:47:12

标签: c# asp.net-mvc-5 asp.net-mvc-routing

我正在建立一个类似图书馆的网站。在该库中,文章可以具有类别,并且所述类别可以具有最多2个父类别,例如:“World> Country> City”。

我希望将所有视图的所有显示都保存到一个名为:nnoremap i i<space><left> 的所有文章的Controller中。正在使用的2个操作是LibraryControllerArticle(string id)

要查看名为“圣殿骑士团”的文章,用户必须输入:Category(string[] ids)

好的,现在的类别。我脑子里有两种方法,这个例子是查看“城市”类别:

  1. 简单方法:/library/article/the-templar-order
  2. 我想要的人:/library/world-country-city
  3. 我不想要的那个,因为它变得太笨拙了:/library/world/country/city
  4. 但我对如何创建一个需要3个参数且基本上没有动作的路线感到困惑。除了第一个参数“world”之外,其余参数应该是可选的,如下所示:/library/category/world/country/city&gt; "/library/world/"&gt; "/library/world/country/"

    那么我将如何创建这样的路线呢?

    解决方案

    RouteConfig.cs

    "/library/world/country/city/"

1 个答案:

答案 0 :(得分:1)

您可以通过以下两条路线实现这一目标。

query = Model.without_matching_amounts

对目标行动稍作修改

// GET library/article/the-templar-order
routes.MapRoute(
     name: "Articles",
     url: "Library/Article/{id}",
     defaults: new { controller = "Library", action = "Article" }
 );

// GET library/world/country/city
routes.MapRoute(
     name: "Category",
     url: "Library/{*categories}",
     defaults: new { controller = "Library", action = "Category" }
 );