2009-11-11 173 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 %>" /> 

該主頁有一個名爲Lang的公共知識。

在控制我們設置包含默認語言和設置的語言proprety(郎)的字段。看來,無論我們做什麼,當前的語言不會從頁面發送到用戶控件...任何幫助?

+0

當頁面呈現,請問在:橫幅控制渲染lang屬性?它仍然看起來像郎=「<%= Lang%>」? – NickGPS 2009-11-11 16:02:06

+0

如果橫幅控件位於母版頁中,請與Freddys關於ui文化的想法一起使用。頁面生命週期是你的敵人,加載事件發生在錯誤的時間來設置你的旗幟。 – 2009-11-11 16:11:51

回答

1

不完全是這樣,但你可以考慮像在母版頁控件的內容頁,所以它可能是頁面的頁面加載的是,用戶控件的頁面加載之前執行。

不管上面的,爲什麼不設置UI文化的asp.net線程(可能是從在Global.asax),並使用從控制。

另一種選擇是讓您持有當前語言一個單獨的類,並公開改變事件......這樣你可以確保使用正確的語言,即使負載不同的做法---或有稍後是更改語言事件。

+0

不太確定在母版頁中作爲控件的頁面。它更像是一個繼承,這就是你指定主類型的原因。我同意ui文化的建議。 – 2009-11-11 16:07:16

+0

聽起來像一個想法,我將不得不尋找一個通過從頁面郎朗聽起來更容易。 – Erick 2009-11-11 16:09:38

+1

你可以爲單個控件指定UICulture嗎?瞭解它是否可以在應用程序級別以外的各個級別上應用將會很有趣。 – NickGPS 2009-11-11 16:10:58

1

您可以訪問它的母版頁的代碼隱藏這樣

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

我要指出,綁定工作在.Net 2.0及以上。

相關問題