Взяв пример вопроса переполнения стека, такой как этот URL:
so.com / вопросы / 1142480 / добавления избыточности-информации к-а-Mvc маршрута
Однако функциональная часть URL-адреса:
so.com / вопросы / 1142480
Способ достижения этого заключается в определении маршрута следующим образом:
routes.MapRoute(
"questions",
"questions/{id}/{title}",
new { controller = "Questions", action = "Details", title = "" });
Затем вы создаете ссылку на него следующим образом:
<%= Html.RouteLink("Adding Redundant Information to a MVC Route",
new
{
controller = "Questions",
id = 1142480,
title = "adding-redundant-information-to-a-mvc-route"
}
)
%>
Я бы предположил, что заголовок URL создается из фактического заголовка в нижнем регистре, заменяя пробелы тире и парой других вещей (экранирование / удаление плохих символов).
До тех пор, пока ваш SEO-маршрут появляется перед любым другим подходящим маршрутом, будет использоваться SEO-маршрут.
Для полной ясности контроллер будет выглядеть следующим образом:
public class QuestionsController : Controller
{
public ActionResult Details(int id)
{
// stuff for display - notice title is not used
}
}