2017-03-06 66 views
4

根据我的搜索引擎优化团队的建议,我正在尝试生成SEO友好的网址。对于一些静态页面我这样做是很容易使用RouteCollection.MapRoute()一样 -在mvc5中创建动态路由

//Home/Solutions 
routes.MapRoute("Solutions", "Solutions", new { controller = "Home", action = "Solutions" }, new[] { "MyAuction.Controllers" }); 

//Home/SolutionOfferings 
routes.MapRoute("Offerings", "Offerings", new { controller = "Home", action = "SolutionOfferings" }, new[] { "MyAuction.Controllers" }); 

//Home/Pricing 
routes.MapRoute("Pricing", "Pricing", new { controller = "Home", action = "Pricing" }, new[] { "MyAuction.Controllers" }); 

当时我想为我的动态路由搜索引擎友好的路线。例如,计划在一天中安排几次拍卖,其中包含拍卖内预定的数百辆车辆。要显示拍卖实际的URL内的预定车辆的细节是有点 -

http://example.com/Auction/VehicleDetails?AuctionId=42&VehicleId=101 请注意,VehicleId代表AuctionVehicles表也包含像MakeModelYearVIN等车辆的其它细节中的身份

我想达到的目标是产生一个动态的URL一样 -

http://example.com/42/honda-civic-2010-123456

其中42是拍卖ID,而honda是品牌,civic是型号,2010是年份,123456是VIN号码的最后6位数字。

不知道如何实现这一点。

我尝试使用这个链接 - Dynamic Routes from database for ASP.NET MVC CMS

任何帮助将不胜感激。

+0

你的SEO团队需要进修。 “搜索引擎优化 - 友好”路线的想法出现了,因为网站正在*一个单一的文件*下加载所有东西,像'index.asp?page = foo'和'index.asp?page = bar'这样的URL。这根本不适用于您的场景。查询字符串是完全正确的,像你这样的路由*已经*搜索引擎友好。 –

+0

你好,如果我的回答是正确的,你能给我一个勾号吗? – Harry

回答

1

路由是mvc中最难掌握的事情之一。我发现最好的办法是在ASP.NET MVC MVC属性路线5.(附言:我打字电话)

您只需加入这一行你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

有还有更多的事情可以做。请阅读下面的文章:

https://blogs.msdn.microsoft.com/webdev/2013/10/17/attribute-routing-in-asp-net-mvc-5/

我也发现了这个链接和子链路此页面上是有益的获得MVC路由的正确理解(大量的阅读!!):

https://www.codeproject.com/Articles/641783/Customizing-Routes-in-ASP-NET-MVC

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

+0

谢谢哈利。让我回顾一下这些链接。 – IrfanRaza