【问题标题】:Accessing control from a master page asp.net - storing the value从母版页 asp.net 访问控制 - 存储值
【发布时间】:2012-04-18 20:05:31
【问题描述】:

目前我有一个母版页和一个内容页。我的母版页包含一个下拉列表,我需要从中选择一个孩子。内容页面根据选择的孩子加载。我应该如何存储选择的下拉值?

我认为我不能使用 会话,因为我希望用户能够同时打开多个标签并观看不同的子内容。如果我可以在这种情况下使用会话,我不确定如何。

我认为我不能使用 viewstate,因为虽然它解决了我的多个选项卡问题,但母版页和内容页具有不同的视图状态。

目前,我在内容页面上使用公共 static 变量,并将其设置在母版页中。但据我所知,静态变量的值存储在网站上的所有当前会话中。

问题: 谁能帮助我建议我应该使用哪种技术?

我也听说过“应用程序”对象,但我认为使用它没有意义。

当前工作代码:

(内容页面)

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

【问题讨论】:

    标签: asp.net session static master-pages viewstate


    【解决方案1】:

    在不同控件之间共享数据的最佳方式是利用“Items”集合(这是HttpContext 类的属性)。该集合是一个哈希表,可以从您的页面和用户控件中访问,如下所示:

    Context.Items["Child"] = ddlChooseChild.SelectedValue;
    

    【讨论】:

    • 非常感谢我的朋友!完美解决了:)
    【解决方案2】:

    除非您使用 PageID or something 类似的方式限制会话,否则会话可在多个选项卡上使用。

    查看这篇文章,Master Content Page interaction

    【讨论】:

    • 我知道会话在多个选项卡上可用,但我希望 SAME 会话变量在不同选项卡上具有不同的值。会话可以做到这一点吗?
    • @test,这样的事情可能会帮助stackoverflow.com/questions/2840615/…
    • @test 您可以在会话变量中存储一个对象。您的对象可能包含您想要的任何信息,使用列表、数组等任意数量的选项卡。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多