Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Routing






В DefaultAreaRegistration добавим обработка lang (/Areas/Default/DefaultAreaRegistration.cs):

context.MapRoute(

name: " lang",

url: " {lang}/{ controller}/{action}/{id}",

defaults: new { controller = " Home", action = " Index", id = UrlParameter.Optional },

constraints: new { lang = @" ru|en" },

namespaces: new[] { " LessonProject.Areas.Default.Controllers" }

);

 

context.MapRoute(

name: " default",

url: " {controller}/{action}/{id}",

defaults: new { controller = " Home", action = " Index", id = UrlParameter.Optional, lang = " ru" },

namespaces: new [] { " LessonProject.Areas.Default.Controllers" }

);

Итак, если строка у нас начинается с lang, то мы используем обработку маршрута “lang”. Обратите внимание на contstrains (ограничения), тут задается, что язык может быть только ru или en. Если это условие не исполняется, то мы переходим к следующей обработке маршрута – “default”, где по-умолчанию lang=ru.

Используем это для инициализации в DefaultController для смены культуры потока (Thread.Current.CurrentCulture) (/Areas/Default/DefaultController.cs):

public class DefaultController: BaseController

{

public string CurrentLangCode { get; protected set; }

 

public Language CurrentLang { get; protected set; }

 

protected override void Initialize(System.Web.Routing.RequestContext requestContext)

{

if (requestContext.HttpContext.Request.Url! = null)

{

HostName = requestContext.HttpContext.Request.Url.Authority;

}

 

if (requestContext.RouteData.Values[" lang" ]! = null & & requestContext.RouteData.Values[" lang" ] as string! = " null")

{

CurrentLangCode = requestContext.RouteData.Values[" lang" ] as string;

CurrentLang = Repository.Languages.FirstOrDefault(p => p.Code == CurrentLangCode);

 

var ci = new CultureInfo(CurrentLangCode);

Thread.CurrentThread.CurrentUICulture = ci;

Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(ci.Name);

}

base.Initialize(requestContext);

}

}


 

Естественно, в BaseController мы убираем инициализацию культуры потока через конфигурационный файл (/Controllers/BaseController.cs):

protected override void Initialize(System.Web.Routing.RequestContext requestContext)

{

if (requestContext.HttpContext.Request.Url! = null)

{

HostName = requestContext.HttpContext.Request.Url.Authority;

}

base.Initialize(requestContext);

}

Запускаем, и проверяем, как изменяется вывод даты:

Первый этап пройден. Переходим к управлению ресурсам сайта.






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.