前段时间看extjsasp控件,它有一个语言设置,就想着如何在程序中实现。研究了一下。有以下一些经验
1、开发一个PageBase类
public class PageBase:Page
{
}
把 InitializeCulture方法给override掉。
在该方法实现如下:
base.InitializeCulture();
if (Session["language"] != null)
{
Page.Culture = Session["language"].ToString();
Page.UICulture = Session["language"].ToString();
}
2、创建一个页面,并继承PageBase
在该页面上添加一个DropDownList控件,并设置选项
<asp:DropDownList ID="ddlLanguages" runat="server" AutoPostBack="True" OnSelectedIndexChanged="ddlLanguages_SelectedIndexChanged">
<asp:ListItem Value="Auto" Text="请选择语言"></asp:ListItem>
<asp:ListItem Value="en-us" Text="英语"></asp:ListItem>
<asp:ListItem Value="zh-cn" Text="简体中文"></asp:ListItem>
</asp:DropDownList>
注意:要设置AutoPostBack为true
3、编写事件代码
Session["language"] = ddlLanguages.SelectedValue;
//重定向,因为,InitializeCulture方法比DropDownList的事件先完成,也就是如果不重定向,所选语言显示的是上一次Session中的值。
Response.Redirect(Request.Url.AbsolutePath);
4、编写该页面的Page_Load事件
if(!IsPostBack)
{
if (Session["language"] != null)
{
//有个redirect,设置一下所选项。
ddlLanguages.SelectedValue= Session["language"].ToString();
}
}