【发布时间】:2013-11-25 12:24:59
【问题描述】:
这是我的问题。我有一个母版页,其中包含一些用于设置网页语言的标志。
在母版页中,我有一个包含菜单项的用户控制器。这些菜单项取决于选择的标志,它会改变。
当我查看Web应用程序的生命周期时,首先运行mainpage_loader,然后运行用户控件加载程序,最后, 运行主页面中定义的函数(标志按钮函数)。
但我需要的是在用户控件内获取会话值。取决于此会话值,加载菜单取决于选择的语言。 但在这种情况下,我永远不会在用户控件中捕获会话值,因为在通过步骤母版页功能之后。 我怎么解决这个问题。谢谢。
我的主页
protected void Page_Load(object sender, EventArgs e)
{
if (Session["lang"]==null)
{
Session["lang"] = "m_en";
}
else
{
}
}
[DirectMethod(IDMode = DirectMethodProxyIDMode.None)]
public void Change_Lang_Event(string lang)
{
CultureInfo ci;
switch (lang)
{
case "m_tr":
ci = new CultureInfo("tr-TR");
Session["lang"] = "m_tr";
//problem is here I coulnt reach Language properti
((UserControl)Page.Master.FindControl("MyMenu1")).Language = Session["lang"].ToString();
break;
case "m_en":
ci = new CultureInfo("en-US");
Session["lang"] = "m_en";
break;
case "m_ru":
ci = new CultureInfo("ru-RU");
Session["lang"] = "m_ru";
default:
ci = new CultureInfo("tr-TR");
Session["lang"] = "m_tr";
break;
}
我的用户控制:
public partial class MyMenu : System.Web.UI.UserControl
{
static List<Ofis> lst;
static CultureInfo cim;
string dilSesion = "";
private string _languages;
public string Languages
{
get { return _languages; }
set { _languages = value; }
}
protected void Page_Load(object sender, EventArgs e)
{
dilSesion = Session["lang"].ToString();
X.Msg.Alert("Uyarı", dilSesion).Show();
}
}
主aspx;
<asp:Contentplaceholder id="Contentplaceholder1" runat="server">
<uc1:MyMenu ID="MyMenu1" runat="server" />
</asp:Contentplaceholder>
【问题讨论】:
-
不错,如果它对您有用,请接受。 :) 谢谢。
-
如果能正常运行,请等待 5 分钟,
标签: c# asp.net asp.net-mvc master-pages multilingual