如何在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答案 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。
对于这种数据,您可能希望使用会话存储。