Установите значение по умолчанию в маршрутизации на каждый запрос - PullRequest
0 голосов
/ 01 июня 2011

У меня есть следующая маршрутизация, которая в основном позволяет мне сохранять язык в URL и гарантирует, что возможны только de и fr (ограничение). В Default - Routing, я устанавливаю de в качестве стандарта, если в URL нет ни одного языка:

// Routing with language
routes.MapRoute("Default_with_language", "{lang}/{controller}/{action}/{id}", new
{
    controller = "Home",
    action = "Index",
    id = UrlParameter.Optional,
}, new { lang = "de|fr" });
// Standard-Routing
routes.MapRoute("Default", "{controller}/{action}/{id}", new
{
    controller = "Home",
    action = "Index",
    id = UrlParameter.Optional,
    lang = "de",
});

Как я могу изменить язык по умолчанию в каждом запросе? Допустим, у меня есть два URL-адреса, один на немецком и один на французском, я хотел бы иметь lang = "fr", если французский URL-адрес называется ...

Спасибо за любой отзыв sl3dg3

Ответы [ 2 ]

0 голосов
/ 01 июня 2011

@ Тим: Спасибо за ваш ответ. Я понял что-то подобное одновременно:

var defaultRoute = RouteTable.Routes["Default"] as Route;
if (Request.Url.ToString().Contains("myFrenchUrl.ch"))
    defaultRoute.Defaults["lang"] = "fr";
else
    defaultRoute.Defaults["lang"] = "de";

sl3dg3

0 голосов
/ 01 июня 2011

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

 HttpContext.Current.Request.RequestContext.RouteData.Values.Add("lang", detectedLanguageFromUrl);

Надеюсь, этого достаточно, чтобы маршрутизация набрала новое значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...