2012-11-21 22 views
5

Czy istnieje sposób zmiany bieżących parametrów adresu URL z kontrolera, więc po załadowaniu strony dodatkowe/różne parametry są wyświetlane na pasku adresu?Zmień adres URL z kontrolera?

Oto co mam na myśli, że mam akcję „produkty”:

public ActionResult Product(int productId) 
{ 
    .. 
} 

I odwzorowaną trasy tak, że product/4545/purple-sunglasses jest mapowany do funkcji powyżej, nazwa produktu jest faktycznie ignorowane, ale chcę, że jeżeli nazwa produktu nie jest określona, ​​sterownik należy dodać to, więc produkt dostanie się łatwo w wyszukiwarkach itp

Odpowiedz

7

Sprawdźcie tutaj: http://www.dominicpettifer.co.uk/Blog/34/asp-net-mvc-and-clean-seo-friendly-urls

jest bardzo długi opis jak to zrobić . Ostatnia część zawiera informacje o 301-przekierowaniach, których należy używać do informowania robotów wyszukiwarek o tym, że dana strona znajduje się pod pożądanym adresem URL.

Nie zapomnij przyjrzeć się kodowaniu adresów URL, zaoszczędzić trochę pracy i zapewnić wyższą jakość adresów URL.

Oto niektóre istotne fragmenty z blogu:

Konfigurowanie routingu:

routes.MapRoute( 
    "ViewProduct", 
    "products/{id}/{productName}", 
    new { controller = "Product", action = "Detail", id = "", productName = "" } 
); 

dodać nazwę-część do kontrolera i sprawdzić, że jest to właściwa nazwa:

public ActionResult Detail(int id, string productName) 
{ 
    Product product = IProductRepository.Fetch(id); 

    string realTitle = product.Title; // Add encoding here 

    if (realTitle != urlTitle) 
    { 
     Response.Status = "301 Moved Permanently"; 
     Response.StatusCode = 301; 
     Response.AddHeader("Location", "/Products/" + product.Id + "/" + realTitle); // Or use the UrlHelper here 
     Response.End(); 
    } 

    return View(product); 
} 

aktualizacja
URL jest najwyraźniej uszkodzony. W tym artykule opisano głównie tę samą funkcję: http://www.deliveron.com/blog/post/SEO-Friendly-Routes-with-ASPnet-MVC.aspx

Dzięki Stu1986C za komentarz/nowy link!

+2

Dzięki. BTW, zawsze dobrym zwyczajem jest kopiowanie krytycznej części połączonej treści do twojego posta, więc jeśli jutro ten link nie będzie już dostępny, użytkownicy nadal będą mogli skorzystać z Twojej odpowiedzi. Będzie także bardziej dostępny, a odpowiedź będzie bardziej widoczna dla ludzi. – Shimmy

+2

Link nie działa. Oto nowy: http: //www.deliveron.com/blog/post/SEO-Friendly-Routes-with-ASPnet-MVC.aspx – Stu1986C

+0

Dodano nowy link do odpowiedzi. Dzięki! –