2013-02-28 79 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
文章还介绍了如何删除的空白字符和破折号。