Маршрутизация MVC ASP.NET с дополнительным исходным параметром

StackOverflow https://stackoverflow.com/questions/3643040

Вопрос

Я начинаю порт существующего веб-сайта ASP.NET CMS для ASP.NET MVC и хочу получить маршрутизацию прямо с самого начала.

ПРИМЕЧАНИЕ. Не важно иметь одинаковую структуру URL.

я думаю Этот ответ близко к тому, что я ищу, но хотелось бы, чтобы какой-то дополнительный вход, если у кого-нибудь есть.

Текущее строительство URL похоже на:

? Content = News / ustinenews / this_is_a_news_article
? Content = Corporate / about_us / обзор

etc и т. Д.

Я хотел бы добавить дополнительное языковое значение и сохранить аналогичную структуру в MVC. Так что-то вроде:

Новости / ustineNews / This-Is-A-News - Статья
EN / NEWS / CUNCENEWS / IS-IS-A-NEWS

Редактировать / Новости / uriquenews / this-is-a-news - статья
Редактировать / ru / News / ustinenews / this-is-a-news - статья

Или мне лучше с обратным?

Новости / ustinenews / this-is-a news - статья / редактировать
EN / NEWS / CUNCENEWS / IS-IS-A-NEWS - Статья / редактировать

Я думаю, что этот путь (с действием в конце) requries маршрут для каждого сценария с других вопросов, которые я прочитал.

Другой момент заключается в том, что существующие URL-адреса делаются подобные для генерации SEO и хлеба крошки. Т.е. URL показывает текущий путь навигации.

Я мог бы просто показать текущую страницу в URL и построить хлебные крошки из базы данных сепарат.

Нравиться:

EN / IS-IS-A-NEWS - Статья

с крошки

Главная> Новости> Текущие новости> Это новостная статья

Общие мысли и решения? Должен ли я просто начать с пользовательского класса маршрутизации для максимальной гибкости?

Это было полезно?

Решение

Вы должны убедиться, что не будет случайных перекрытий определенных правил маршрутизации. Например, скажем, вы помещаете язык в качестве первого тега, убедитесь, что новости не будут новостей, которые имеют «en» для имени. Я знаю, что это глупый пример, но я думаю, что вы получите картину. Убедитесь, что вы поставили наименее точные правила маршрутизации последним.

Лично я бы структурировал это так:

[language]/[category]/[subcategory]/[itemtitle]/[itemid]

Почему [itemid] вы можете спросить? Если у вас есть более крупный веб-сайт, может произойти, что у вас есть 2 новость с той же именем. Ваш код может «просто произойти», написанный только для того, чтобы показать только первый новостной новость, но это так же хорошо не может быть. Идентификатор всегда уникален, и в SEO термины, добавляя идентификатор, действительно не имеет значения (по крайней мере, в моем опыте).

Вы можете добавить маршрут, где [Language] оставлен, и вместо этого предоставляется по умолчанию.

Кроме того, Скотт Гутри написал хороший Сообщение блога На этом назад это определенно стоит прочитать, я думаю, что это все еще действует для MVC 3. Это может просто дать вам некоторые идеи!

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top