在母版页- pagload中获取会话值
本文关键字:获取 会话 pagload 母版页 | 更新日期: 2023-09-27 18:06:18
我有一个母版页,我有一个下拉的语言。我保存下拉选择的值在会话。然后在页面加载时检查session的值。但它给出了异常,因为在页面加载时,会话中没有任何内容。谁能告诉我在页面加载之前我应该调用什么方法,在这个方法中我可以将会话设置为默认值?
提前感谢。
protected void ddlLanguage_SelectedIndexChanged(object sender, EventArgs e)
{
Session["Language"] = ddlLanguage.SelectedValue;
}
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
ddlLanguage.SelectedValue = Session["Language"].ToString();
}
您可以将会话变量初始化为Page_Init事件中的默认值。因此,当Page_Load事件被触发时,至少您将有一个可检查的值。
或者,你可以在Page_Load事件中检查Session变量是否为空值;如果它确实是null,则不尝试使用它的值。
对于第二个选项,将代码修改为:protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
ddlLanguage.SelectedValue = Session["Language"] == null ? "0" : Session["Language"].ToString();
}
用下拉列表中的默认值替换三元运算符真条件中的零
你必须在使用它之前检查它,因为当你试图从会话中获得值时,它是空的,没有分配任何值。
if (Session["Language"] != null)
{
ddlLanguage.SelectedValue = Session["Language"].ToString();
}
无需在页面初始化事件中设置默认选项,您可以在页面加载事件中设置语言下拉菜单,如下所示:
母版页代码
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
if (Session["culture"] != null)
ddlLanguage.SelectedValue = Session["culture"].ToString();
else
{
ddlLanguage.SelectedValue = "en-US";
Session["culture"] = "en-US";
}
}
}
protected void ddlLanguage_SelectedIndexChanged(object sender, EventArgs e)
{
Session["culture"] = ddlLanguage.SelectedValue;
}
=================
通过这种方式,我可以在会话中保留选定的语言,并可以在整个应用程序中使用。
您可以使用Page_PreLoad
事件来设置会话变量的值…