Создать маршрут, который позволяет указывать имя как часть URL. Обратите внимание, что он, вероятно, фактически не используется при разрешении статьи, поскольку он может быть не уникальным. Идентификатор - это бит информации, который фактически используется для поиска и отображения правильной статьи, но имя является частью URL для контекста.
routes.MapRoute(
"Question",
"{controller}/{id}/{name}",
new { controller = "questions", action = "show", id = UrlParameter.Optional, name = UrlParameter.Optional },
new { id = "[0-9]+" } // constraint to force id to be numeric
);
Теперь, когда вы используете Html.ActionLink () и указываете имя в качестве параметра, маршрут будет совпадать, и имя будет добавлено в качестве компонента URL-адреса вместо параметра запроса.
<%= Html.ActionLink( "questions", new { id = Model.ID, name = Model.NameForUrl } ) %>
Обратите внимание, что если у вас несколько совпадающих маршрутов, вам может потребоваться использовать RouteLink и указать маршрут по имени. Кроме того, порядок имеет значение.