asp.net mvc маршрутизация с необязательным начальным параметром - PullRequest
3 голосов
/ 04 сентября 2010

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

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

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

Текущий URLструктура выглядит следующим образом:

? Content = News / CurrentNews / This_is_a_news_article
? Content = Corporate / About_Us / Overview

и т. д.

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

Новости / CurrentNews / This-is-news-article
ru / Новости / CurrentNews / This-is-news-article

edit / Новости / CurrentNews / This-is-news-article
edit / ru / Новости / CurrentNews / This-is-news-article

или мне лучше сreverse?

Новости / CurrentNews / This-is-news-article / edit
ru / Новости / CurrentNews / This-is-news-article / edit

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

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

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

Как:

ru / This-is-a-news-article

с крошкой

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

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

1 Ответ

1 голос
/ 06 сентября 2010

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

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

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

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

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

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

...