2017-03-06 64 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