2009-07-17 9 views
5

Gdy dojdziesz do tego pytania, zauważysz, że tytuł pytania znajduje się na pasku adresu i klikniętym przez Ciebie linku. Nie jestem pewien, jaka jest dokładna terminologia, więc trudno ją znaleźć, ale jak mogę zrobić coś podobnego? To jest, Jak mogę dodać dane do paska adresu, który jest wyłącznie dla show/wyszukiwarek.Dodawanie nadmiarowych informacji do trasy MVC

Dzięki

Odpowiedz

6

Biorąc przykład pytanie przepełnienie stosu jak ten adres URL jest:

so.com/questions/1142480/adding-redundant-information-to-a-mvc-route

Jednak funkcjonalna część URL to

so.com/questions/1142480

Sposób, w jaki jest to osiągane, polega na zdefiniowaniu trasy takiej jak ta:

routes.MapRoute(
    "questions", 
    "questions/{id}/{title}", 
    new { controller = "Questions", action = "Details", title = "" }); 

Następnie utwórz link do niego tak:

<%= Html.RouteLink("Adding Redundant Information to a MVC Route", 
     new 
     { 
      controller = "Questions", 
      id = 1142480, 
      title = "adding-redundant-information-to-a-mvc-route" 
     } 
    ) 
%> 

wyobrażam sobie tytuł URL jest tworzony od rzeczywistego tytuł od dolnej części obudowy, zastępując przestrzenie z kresek i parę innych rzeczy (ucieczka/pasy złych znaków).

Dopóki twoja trasa SEO pojawia się przed jakąkolwiek inną pasującą trasą, zostanie użyta trasa SEO.

Dla pełnej jasności sterownik byłby rzeczywiście tak:

public class QuestionsController : Controller 
{ 
    public ActionResult Details(int id) 
    { 
     // stuff for display - notice title is not used 
    } 
} 
+0

Pozdrawiam, Zrobiłem to :) – Damien

+0

Cieszę się, że mogłem pomóc –

2

Jedno należy zdać sobie sprawę, że tekst na końcu tego adresu URL jest właściwie obojętne. Na przykład ten URL:

otworzy to pytanie czysto. Podobnie tytuł inne niż swoje pytanie:

będzie również otwarty na to pytanie bez błędów.

Możesz łatwo użyć jakiegoś algorytmu parsowania tytułów, aby wygenerować adres URL "SEO friendly", uzupełniony tytułem, i dodać go na końcu numeru pytania. Twoja trasa MVC zignoruje ostatnią część.

+0

okrzyki za informacje :) – Damien