Добавление избыточной информации в маршрут MVC - PullRequest
5 голосов
/ 17 июля 2009

Когда вы придете к этому вопросу, вы заметите, что заголовок вопроса находится в адресной строке и по ссылке, по которой вы щелкнули, чтобы попасть сюда. Я не уверен, что точная терминология так трудно найти, но как я могу сделать что-то подобное? То есть, как я могу добавить данные в адресную строку, которая предназначена исключительно для шоу / поисковых систем.

Спасибо

Ответы [ 2 ]

6 голосов
/ 17 июля 2009

Взяв пример вопроса переполнения стека, такой как этот 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
    }
}
2 голосов
/ 17 июля 2009

Одна вещь, которую вы должны понять, это то, что текст в конце этого URL на самом деле пустышка. Например, этот URL:

откроет этот вопрос чисто. Аналогично, название, отличное от вашего вопроса:

ТАКЖЕ откроет этот вопрос без ошибок.

Вы можете легко использовать некоторый алгоритм анализа заголовка, чтобы сгенерировать «дружественный SEO» URL для вас вместе с заголовком и добавить его в конце номера вопроса. Ваш маршрут MVC будет просто игнорировать последнюю часть.

...