C# 在mvc5中创建动态路由

C# 在mvc5中创建动态路由,c#,asp.net-mvc,C#,Asp.net Mvc,根据我的搜索引擎优化团队的建议,我试图生成搜索引擎优化友好的网址。对于一些静态页面,我已经使用RouteCollection.MapRoute()轻松地完成了这项工作,如- 然后我尝试为我的动态路线生成SEO友好路线。例如,在一天中安排了几次拍卖,拍卖中安排了数百辆汽车。为了在拍卖中显示该预定车辆的详细信息,实际URL有点- http://example.com/Auction/VehicleDetails?AuctionId=42&VehicleId=101 请注意,VehicleId表示Au

根据我的搜索引擎优化团队的建议,我试图生成搜索引擎优化友好的网址。对于一些静态页面,我已经使用RouteCollection.MapRoute()轻松地完成了这项工作,如-

然后我尝试为我的动态路线生成SEO友好路线。例如,在一天中安排了几次拍卖,拍卖中安排了数百辆汽车。为了在拍卖中显示该预定车辆的详细信息,实际URL有点-

http://example.com/Auction/VehicleDetails?AuctionId=42&VehicleId=101
请注意,
VehicleId
表示
AuctionVehicles
表中的标识,该表还包含车辆的其他详细信息,如
品牌
车型
年份
VIN

我想要实现的是生成一个动态URL,如-

其中42为拍卖id,本田为品牌,思域为车型,2010年为年份,123456为VIN编号的最后6位数字

不知道如何实现这一点

我试着使用这个链接-


任何帮助都将不胜感激。

路由是mvc中最难掌握的事情之一。我发现最好的方法是ASP.NETMVC5中的MVC属性路由。(顺便说一句,我正在打电话)

您只需在RouteConfig中包含这一行

 routes.MapMvcAttributeRoutes();
然后,您可以设置可选参数和默认值,并在实际控制器中映射URL,如下所示:

 [Route("books/{bookName?}")]
 public ActionResult View(string bookName)
 {
      if (!String.IsNullOrEmpty(bookName)
      {
           return View("OneBooks"), GetBooks(bookName));
      }
      return View("AllBooks"), GetBooks());
 }
您的url看起来像www.example.com/books/jungle-book

你还可以做很多事情。请阅读以下文章:

我还发现此页面上的链接和子链接有助于正确理解mvc路由(大量阅读!!):


正如我所说的,我认为属性路由是最好的选择

谢谢你,哈利。让我回顾一下链接。你的SEO团队需要一个复习课程。“SEO友好”路线的想法产生是因为网站在一个文档下加载所有内容,URL类似于
index.asp?page=foo
index.asp?page=bar
。这完全不适用于您的场景。查询字符串非常好,像你这样的路线已经是SEO友好的了。嗨,如果我的答案是正确的,你能给我打勾吗。
 [Route("books/{bookName?}")]
 public ActionResult View(string bookName)
 {
      if (!String.IsNullOrEmpty(bookName)
      {
           return View("OneBooks"), GetBooks(bookName));
      }
      return View("AllBooks"), GetBooks());
 }