powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Routing для многоязычного сайта на mvc
1 сообщений из 1, страница 1 из 1
Routing для многоязычного сайта на mvc
    #37491352
Darooma
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сайт на mvc на нескольких языках. По-умолчанию английский язык. Его значение хранится в url'e, не в сессии и не в куках.

Url'ы вида
Код: plaintext
1.
2.
3.
4.
site.com/about
site.com/ru-ru/about
site.com/ru-ru/categories/category1/article/12
site.com/categories/category1/article/12
Если в Url'е не задан язык, тогда язык английский.


Есть базовый класс

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
public abstract class ControllerBase : Controller
    {
        public BECulture CurrentCulture { get; set; }
        protected override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            string culture = filterContext.RouteData.Values[MvcApplication.CultureParamerName] as string;
            CultureInfo cultureInfo;
            if (!string.IsNullOrWhiteSpace(culture))
            {
                cultureInfo = CultureInfo
                    .GetCultures(CultureTypes.AllCultures)
                    .FirstOrDefault(x => x.Name.ToLower() == culture);
                if (cultureInfo == null)
                    cultureInfo = Facade.Common.DefaultCulture;
                Thread.CurrentThread.CurrentCulture = cultureInfo;
                Thread.CurrentThread.CurrentUICulture = cultureInfo;
            }
            else
            {
                Thread.CurrentThread.CurrentCulture = Facade.Common.DefaultCulture;
                Thread.CurrentThread.CurrentUICulture = Facade.Common.DefaultCulture;
            }

            base.OnActionExecuting(filterContext);
        }


И маршруты (не все, но для первых двух url'ов - site.com/about и site.com/ru-ru/about
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
 routes.MapRoute(
               "HomeWithoutCulture_Route",
               "{action}",
               new { controller = "home", culture = "en-us" }
               );

            routes.MapRoute(
                "Home_Route",
                "{culture}/{action}",
                new { controller = "home", culture = "en-us" }
                );


            routes.MapRoute(
                "Default_Route",
                "{culture}/{controller}/{action}/{id}",
                new { controller = "home", action = "index", id = 1, culture = "en-us" },
                new { id = @"\d" }
                );

Есть ссылка для тестирования. Её url всегда равен /about, даже если язык русский.

Код: plaintext
<li>@Html.ActionLink(Resources.Strings.About_Link, "about", "home")</li>

По-моему я что-то упустил. Что именно?
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Routing для многоязычного сайта на mvc
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]