在母版页- 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();
        }

在母版页- pagload中获取会话值

您可以将会话变量初始化为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事件来设置会话变量的值…