ASP.net Маршрутизация и глобализация - PullRequest
0 голосов
/ 03 декабря 2011

Следующие файлы:

~/Admin/Dashboard.aspx
~/Admin/Welcome.aspx

маршрутизируются как

administrator/{culture}/dashboard/
administrator/{culture}/welcome/
administrator/dashboard/ (for invariant culture)
administrator/welcome/ (for invariant culture)

SiteMap

/administrator/dashboard/
/administrator/welcome/

Информация с карты сайтазагружен в древовидный элемент управления.

Сценарий

Пользователь выбирает французский язык в качестве желаемого языка из элемента управления списка, который сохраняется в сеансе.

Задача

Как отразить изменение в навигации (древовидное управление)?

administrator/fr/dashboard/
administrator/fr/welcome/

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

Комментарии более чем приветствуются.

1 Ответ

0 голосов
/ 03 декабря 2011

Хороший вопрос. Файлы Sitemap и перезапись URL-адресов (маршрутизация) не работают хорошо.

[1] реализует метод, который может принимать путь страницы в качестве аргумента и возвращает правильный переписанный путь URL:

GetURL ( '/ Admin / Dashboard.aspx') который вернет вам строку url, основываясь на параметрах url, инвариантной культуре и т. д.

[2] в карте сайта используйте обычные URL. /Admin/Dashboard.aspx

[3] когда вы связываете дерево, вам нужно использовать метод GetUrl для обновления ваших URL.

Точно так же, если вы используете sitemappaths, это также будет обрабатываться аналогичным образом.

Так я делаю в большинстве проектов, которые у меня есть.

...