Глобализация и локализация веб-страницы ASP.NET в главной странице C # 3.0 - PullRequest
2 голосов
/ 02 января 2012

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

   protected override void InitializeCulture()
    {
        if (Request["Language"] != null)
        {
            //String selectedLanguage = Request["Language"];
           // code wil go here

        }
        base.InitializeCulture();
       //base.InitializeCulture gives error as mentioned in the next line
       //does not contain a defination for InitializeCulture
    }

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

Если я могу определить этот код на главной странице, тогда мне не нужно писать этот код в каждом файле.

Я делаю что-то не так, у меня есть файл для многопоточности и глобализации, но он не работает на главной странице

1 Ответ

3 голосов
/ 02 января 2012

Вы должны сделать это (= переопределить InitializeCulture) в вашем классе Page. Он не работает на главной странице (MasterPage является производной от Control, а не от страницы). Я бы посоветовал вам реализовать базовый класс, производный от Page, и выводить каждую веб-форму из этого класса, тогда вам также придется писать код только один раз. Всегда удобно иметь свой базовый класс.

В Visual Studio вы добавляете новый класс PageBase.cs:

public class FormBase : Page
{
   protected override InitializeCulture()
   {
      if (Request.Form["lbCulture"] != null)
      {
         String selectedLanguage = Request.Form["lbCulture"];
         UICulture = selectedLanguage;
         Culture = selectedLanguage;

         Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(selectedLanguage);
         Thread.CurrentThread.CurrentUICulture = new CultureInfo(selectedLanguage);
      }
      base.InitializeCulture();
   }
}

Текущая культура либо сохраняется в каком-либо раскрывающемся списке, в сеансе, либо передается по строке запроса. Я использовал список в образце.

А затем вы выводите свою веб-форму с этой страницы следующим образом:

public class Default : FormBase // instead of deriving from Page
...