在母版页中获取会话值 - 页面加载

时间:2011-08-19 06:57:00

标签: c# asp.net 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();
        }

4 个答案:

答案 0 :(得分:3)

您可以将会话变量初始化为Page_Init事件中的默认值。因此,当触发Page_Load事件时,至少会有一个要检查的值。

或者,您可以在Page_Load事件&中检查Session变量中的空值。如果它确实为空,则不要尝试使用它的值。

对于第二个选项,请将代码更改为:

protected void Page_Load(object sender, EventArgs e)
{

    if (!IsPostBack)
    {

        ddlLanguage.SelectedValue = Session["Language"] == null ? "0" : Session["Language"].ToString();
    }

使用下拉列表中的默认值替换三元运算符的真实条件下的零。

答案 1 :(得分:2)

你必须在使用它之前检查它,因为当你试图从会话中获取值时它是null并且还没有分配任何值。

 if (Session["Language"] != null)
 {
      ddlLanguage.SelectedValue = Session["Language"].ToString();
 }

答案 2 :(得分:1)

无需在页面初始化事件中设置默认选项,您可以在页面加载事件中设置语言下拉列表,如下所示:

主页代码

 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;
    }

=================

通过这种方式,我可以在会话中保留所选语言,并可以在整个应用程序中使用。

答案 3 :(得分:0)

您可以使用Page_PreLoad事件来设置会话变量的值...