我在母版页面上有两个按钮,用于阿拉伯语和英语 当我点击其中一个按钮时,会话[“Lang”]将会改变。
现在在chiled页面我写这个
protected void Page_Load(object sender, EventArgs e)
{
if (Session["Lang"] == "en-US")
{
Label1.Text = "English";
}
else
{
Label1.Text = "Arabic";
}
当我点击按钮更改会话时,子代码将首先执行,然后将转到母版页并运行一个butn事件来更改会话
任何人都有想法在子页面之前调用按钮事件
先谢谢
Mohammmed ^ _ ^
答案 0 :(得分:1)
您需要查看ASP.NET Webforms页面生命周期,以了解何时会发生什么。
以下是一些有关该问题的文档:http://msdn.microsoft.com/en-us/library/ms178472(v=vs.100).aspx#lifecycle_events
目前您遇到的问题是按钮点击事件发生在Page_Load
事件之后,因此当您点击按钮时,您可能会遇到Label1.Text
只需点击一次"背后&# 34 ;.
查看文档并将Label1.Text
作业放在PreRender
中。
就像@ArabicProgrammer所回答的那样,最好还是实际使用.NET Framework中提供的Culture支持。如果您使用该方法,则可以使用类似的方式显示语言。
<%= System.Threading.Thread.CurrentThread.CurrentCulture.DisplayName %>
而不是使用Label控件。
答案 1 :(得分:1)
在页面加载之前执行InitializeCulture,您应该使用它来更改页面的文化,并在执行后重定向到默认页面中的母版页。
您可以使用此
protected override void InitializeCulture()
{
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(Session["Lang"].ToString());
Thread.CurrentThread.CurrentUICulture = new CultureInfo(Session["Lang"].ToString());
base.InitializeCulture();
}
答案 2 :(得分:0)
我使用这种方法
protected override void InitializeCulture()
{
}
在这个方法中我得到了事件Target(按钮的ID)这个
protected override void InitializeCulture()
{
string language = Request["__EventTarget"];
if (!string.IsNullOrEmpty(language))
{
if (language.EndsWith("Ar"))
{
languageId = "ar-SA";
}
else if (language.EndsWith("En"))
{
languageId = "en-US";
}
}
所以会话将改变frist然后将加载页面然后加载母版页。