我们正在尝试本地化我们的用户控件,基本上我们希望能够做到这样的事情:
<in:Banner runat="server" ID="banners" Lang="fr" />
我们这样做的方式是按页面级别将其发送给master,然后将其发送给控件:
protected void Page_Load(object sender, EventArgs e)
{
Master.Lang = "FR";
}
然后在MasterPage.master中我们做这样的事情:
<in:Banner runat="server" ID="banners" Lang="<%= Lang %>" />
该主页有一个名为Lang的公共财产。
在控件中,我们设置了一个包含默认语言的字段和一个设置语言的proprety(Lang)。似乎无论我们做什么,当前语言都不会从页面发送到用户控件...任何帮助?
答案 0 :(得分:1)
不完全相同,但您可以将内容页面视为母版页中的控件,因此页面的页面加载可能会在该用户控件的页面加载之前执行。
无论如何,为什么不将ui文化设置为asp.net线程(可能来自global.asax),并使用控件中的文件。
另一个选择是拥有一个单独的类,您可以在其中保存当前语言,并公开更改事件......即使负载不同,您也可以确保使用正确的语言 - 或者稍后改变语言事件。
答案 1 :(得分: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及更高版本中使用。