2013-02-28 134 views

回答

9

請嘗試下面的解決方案。在global.asax.cs

routes.MapRoute(
    "Product", 
    "{productName}", 
    new { controller = "Product", action = "Index" }, 
    new { productName = UrlParameter.Optional } 
); 

但你需要productName保持獨特性和產品控制器(即指數在行動產品控制器通過獲取記錄:

public ActionResult index(string productName) 
{ 
    //do something regarding get product by productname 
} 
8

您可以用這種方式向您的MVC路由引擎添加路由 -

Global.asax.cs

routes.MapRoute(
    "Product", 
    "{controller}/{productId}/{productName}", 
    new { controller = "Product", action = "Index" }, 
    new { productId = UrlParameter.Optional , productName = UrlParameter.Optional } 
); 

這將讓你有URL像

www.domain.com/productid/productname 

你可能會或可能無法達到

www.domain.com/productname 

的原因是,產品名稱ISN」 t標識符並且不能用於唯一地查找記錄。你需要一個URL中的標識符。

Ex - 在SO中查看這個問題的URL,它有ID,然後附加SEO友好測試。

+0

http://www.deliveron.com/blog/post/SEO-Friendly-Routes-with-ASPnet-MVC.aspx – 2014-04-06 10:18:34

0

在Global.asax創建一個新的途徑來處理這個:

routes.MapRoute(
     "productId",     // Route name 
     "productId/{id}/{name}",  // URL with parameters 
     new { controller = "Home", action = "productId", id = 1234, name = widget } // Parameter defaults 
    ); 

Asp.Net MVC具有路由內置的,所以沒有必要爲URL重寫。

詳情here

12

這是對於初學者最好的文章 - > SEO Friendly URls
文章還介紹瞭如何刪除的空白字符和破折號。