Передача параметров в пользовательский элемент управления - PullRequest
3 голосов
/ 11 ноября 2009

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

<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 %>" />

На главной странице есть публичная собственность по имени Lang.

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

Ответы [ 2 ]

1 голос
/ 11 ноября 2009

Вы можете получить к нему доступ в коде 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 и выше.

1 голос
/ 11 ноября 2009

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

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

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

...