2013-02-28 14 views

Odpowiedz

9

Proszę spróbować poniższego rozwiązania. W global.asax.cs

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

ale ty niezbędne do utrzymania unikatowości w productName i rekord pobrać przez które w akcji index kontrolera produktu (czyli w kontrolerze produktu:

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

Możesz dodać trasę do swojego silnika trasowania MVC w ten sposób -

W Global.asax.cs

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

To pozwoli Ci mieć URL jak

www.domain.com/productid/productname 

Powodem może być lub nie być w stanie osiągnąć

www.domain.com/productname 

że ProductName ISN” t identyfikator i nie można go używać do pojedynczego wyszukiwania rekordu. Będziesz potrzebować identyfikatora w adresie URL.

Ex - spójrz na adres URL tego pytania w SO, ma identyfikator, a następnie dołącza test SEO friendly.

+0

http://www.deliveron.com/blog/post/SEO-Friendly-Routes-with-ASPnet-MVC.aspx –

0

utworzyć nową trasę w Global.asax obsłużyć to:

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 routing ma wbudowany, więc nie trzeba za Url nagrywarka.

więcej szczegółów here

12

To najlepszy artykuł dla początkujących -> SEO Friendly URls
Artykuł wyjaśnia także jak usunąć spacje i myślniki.