2009-11-11 2 views
3

Мы пытаемся здесь, чтобы локализовать наше пользовательский элемент управления в основном мы хотим, чтобы быть в состоянии сделать что-то вроде этого:Передача параметров в пользовательском элементе управления

<in:Banner runat="server" ID="banners" Lang="fr" /> 

, как мы делаем это на уровне страницы и отправить его мастер, который затем отправить его управления:

protected void Page_Load(object sender, EventArgs e) 
{ 
    Master.Lang = "FR"; 
} 

Тогда в MasterPage.master мы делаем что-то вроде этого:

<in:Banner runat="server" ID="banners" Lang="<%= Lang %>" /> 

На главной странице представлен публичный проспект по имени Ланг.

В элементе управления мы установили поле, которое содержит язык по умолчанию, и proprety (Lang), которые задают язык. Кажется, что что бы мы ни делали, текущий язык не отправляется со страницы на usercontrol ... любая помощь?

+0

Когда страница отображает, как элемент управления Banner визуализирует атрибут Lang? Он по-прежнему выглядит как Lang = "<%= Lang%>"? – NickGPS

+0

Если элемент управления баннером находится на главной странице, перейдите к идее Freddys о культуре ui. Жизненный цикл страницы - ваш враг здесь, когда событие загрузки происходит в неподходящее время, чтобы настроить баннер. –

ответ

1

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

Независимо от вышесказанного, почему бы не установить культуру ui в поток asp.net (возможно, из global.asax) и использовать это из элемента управления.

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

+0

Не уверен, что страница является элементом управления на главной странице. Это больше похоже на наследование, поэтому вы указываете тип мастера. Однако я согласен с предложением культуры ui. –

+0

Похоже на идею, мне придется посмотреть, что проще пропустить Lang со страницы. – Erick

+1

Можете ли вы указать UICulture для одного элемента управления? Было бы интересно узнать, может ли он применяться на разных уровнях, кроме уровня приложения. – NickGPS

1

Вы можете получить доступ к нему в коде-позади от MasterPage как этот

public void SetLanguage(string language) 
{ 
    banners.Lang = language; //banners is an ID reference to your user control. 
} 

Или в разметке я думаю, что вы можете сделать это, как этот

<in:Banner runat="server" ID="banners" Lang='<%# Bind("Lang") %>' /> 

Я должен упомянуть, что Bind работает .Net 2.0 и выше.

Смежные вопросы