Маршрутизация MVC ASP.NET с дополнительным исходным параметром
-
30-09-2019 - |
Вопрос
Я начинаю порт существующего веб-сайта 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. Это может просто дать вам некоторые идеи!