目前我有一个母版页和一个内容页面。我的母版页包含一个下拉列表,我需要从中选择一个子项。内容页面根据所选的孩子加载。我应该如何存储选择的下拉值?
我认为我不能使用会话,因为我希望用户能够同时打开多个标签并观看不同的子内容。如果我可以在这种情况下使用会话,我不确定如何。
我认为我不能使用 viewstate ,因为虽然它解决了我的多个标签问题,但母版页和内容页面具有不同的视图状态。
目前我在内容页面上使用公共静态变量,并将其设置在母版页中。但是从我所听到的情况来看,静态变量的值存储在网站上的所有当前会话中。
问题: 任何人都可以建议我应该使用哪种技术来帮助我吗?
我也听说过'应用'对象,但我觉得使用它并不合理。
当前正在运行的代码:
(内容页面)
public static string Child
{
get
{
if (child == null)
return "-1";
return child;
}
set
{
child = value;
}
}
(母版页)
protected void ddlChooseChild_IndexChanged(object sender, EventArgs e)
{
ContentPage.Child = ddlChooseChild.SelectedValue;
}
答案 0 :(得分:2)
在不同控件之间共享数据的最佳方法是使用“Items”集合(这是HttpContext类的属性)。该集合是一个Hashtable,可以从您的页面和用户控件中访问,如下所示:
Context.Items["Child"] = ddlChooseChild.SelectedValue;
答案 1 :(得分:1)
除非您使用PageID or something类似限制会话,否则会在多个标签上提供会话。