动态创建不同的会话变量

时间:2013-09-10 18:41:20

标签: c# asp.net session-variables

我想知道是否可以基于变量动态创建具有不同名称的不同会话变量?

我试图以这种方式完成但似乎不喜欢我的变量

protected void myGridView_RowDataBound(object sender, GridViewRowEventArgs e)
{
    LinkButton lb = (LinkButton)e.Row.FindControl("MyLinkButton");
    Label options = (Label)e.Row.FindControl("MyLabel");
    if (e.Row.RowType == DataControlRowType.DataRoow)
    {
    Session[lb] = options;  
//I was trying to use this to create Session Variables with Different Names Dynamically
    }

}

所以我的最终结果是,我将有以下会话而不必手动创建所有这些会议。

Session["Value"] = "MyOption"
Session["Value1"] = "MyOption1"
Session["Value2"] = "MyOption2"
Session["Value3"] = "MyOption3"

2 个答案:

答案 0 :(得分:0)

你正在向后做。由于您在RowDataBound事件中,显然您是数据绑定。因此,请将数据保存在Session["DataSource"]或类似的内容中,而不是在逐行绑定数据集时重新创建数据集。

我建议使用ViewState,因为它仅对该页面有效。如果您不打算在该页面之外使用数据,则没有理由将其添加到Session。

你在使用会话数据是什么?

答案 1 :(得分:0)

您可以创建部分列表。对于exaple:

List<string> sections=GetSectionsList();

列表中的每个项目都会创建一个Session变量并填充状态,如下所示:

foreach(string section in sections)
{
   Session[section] = GetSectionStatus(section);
}

然后每个部分的onload检查部分会话值并相应地采取行动。但是有一条建议在这种情况下使用会话,只要这些部分的数量要少得多,比如说2到5,否则每个部分加载的db调用会更好。