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
}
}
Pozdrawiam, Zrobiłem to :) – Damien
Cieszę się, że mogłem pomóc –