我有一个母版页,我有一个语言下拉列表。我在会话中保存下拉列表的选定值。并希望检查页面加载会话中的值是什么。但它给出了异常,因为在页面加载时,会话中没有任何内容。 谁能告诉我在页面加载之前我应该调用哪种方法,我可以将会话设置为默认值?
提前致谢。
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();
}
答案 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
事件来设置会话变量的值...