2010-09-04 3 views
3

Я запускаю порт существующей ASP.NET Web Forms CMS для ASP.NET MVC и хочу получить маршрутизацию с самого начала.asp.net mvc routing с необязательным начальным параметром

Примечание: не важно иметь точно такую ​​же структуру URL.

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

Текущий URL струкция, как:?

Content = Новости/CurrentNews/This_is_a_news_article
Content = Corporate/about_us/Обзор

и т.д. и т.п.

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

Новости/CurrentNews/Это-это-новости-статьи
ан/Новости/CurrentNews/Это-это-новости-статьи

редактировать/Новости/CurrentNews/Это-это-новости-статьи
редактировать/EN/новости/CurrentNews/Это-это-новости-статьи

или я лучше с обратной?

Новости/CurrentNews/Это-это-новости-статьи/редактировать
ан/Новости/CurrentNews/Это-это-новости-статьи/редактировать

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

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

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

Как:

ан/Это-это-новости-статьи

с крошкой

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

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

ответ

1

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

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

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

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

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

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

+0

Спасибо за эти идеи. Itemid на конце, безусловно, действителен и важен. –