【问题标题】:User Control added to page dynamically with counter使用计数器动态添加到页面的用户控件
【发布时间】:2012-03-18 21:13:10
【问题描述】:

我有一个静态 int 记录已添加到页面的用户控件的数量。

    static int mycount = 1; //Default value

当我向页面添加更多控件时,计数器会获得 +1,这工作正常

    static int mycount = 2; //Add second control

但是如果我在不同的浏览器中打开另一个页面实例,计数器仍然有 mycount=2

如果您打开一个新的浏览器会话,静态 int 的默认值为 1。

我需要处理会话还是什么?

//更新

在 SO 上找到答案后,我使用了 Sessions

How to access session variables from any class in ASP.NET?

关于会话处理的很好解释

【问题讨论】:

    标签: c# asp.net


    【解决方案1】:

    我绝对建议使用非静态的东西,因为静态保存在内存中并且可能会在那里停留一段时间,否则会话变量存储在会话中,这通常仅取决于特定用户,因此所有会话变量对用户来说是唯一的,而静态变量更难做到唯一。

    Session["mycount"] = 1;
    

    http://msdn.microsoft.com/en-us/library/ms178581.aspx 或者根据您的情况,最好使用 viewstate http://msdn.microsoft.com/en-us/library/4yfdwycw%28v=vs.71%29.aspx

    ViewState["mycount"] = "1";
    

    【讨论】:

      【解决方案2】:

      是的,当然! 静态变量的内存是在为对象类型分配的堆内分配的。只要我们为内存中的每一页只实例化一个对象类型,它的行为就会像这样。 对于 asp 网页会话状态比静态变量更有用。 下一个post 声明相同,并提供更多详细信息。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-01-30
        • 2010-10-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-31
        相关资源
        最近更新 更多