在ASP.NET页面中存储会话变量?

时间:2010-01-12 21:12:27

标签: c# asp.net

如何在ASP.NET页面上放置具有整个会话范围的变量(我的意思是在aspx页面后面的类中)?是将变量放在Session对象中的唯一方法吗?

例如:

public partial class Test_ : System.Web.UI.Page
{
    private int idx = 0;

    protected void Button1_Click(object sender, EventArgs e)
    {
        Button1.Text = (idx++).ToString();
    }
}

我希望每次点击此按钮我的索引都会上升。如何在不使用Session对象的情况下执行此操作?

提前10倍, Danail

3 个答案:

答案 0 :(得分:3)

您可以将其放在ViewState

public partial class Test_ : System.Web.UI.Page {

    protected void Button1_Click(object sender, EventArgs e) {
        if(ViewState["idx"] == null) {
            ViewState["idx"] = 0;
        }
        int idx = Convert.ToInt32(ViewState["idx"]);

        Button1.Text = (idx++).ToString();

        ViewState["idx"] = idx;
    }
}

答案 1 :(得分:2)

ViewState似乎就是你在这里寻找的东西,只要该计数器不需要在本页范围之外维护。请记住,页面刷新会重置计数器。此外,如果计数器是敏感信息,请小心它将在呈现的HTML中存储(加密),而会话值存储在服务器端。

答案 2 :(得分:1)

会话之外还有很多选项。看看 Nine Options for Managing Persistent User State in Your ASP.NET Application

对于这种数据,您可能希望使用会话存储。