我需要一个字段来存储一个 asp 按钮单击另一个 asp 按钮后的一些信息。
我看到它不起作用,所以我写了以下简单的页面代码隐藏(认为可能是我的一些代码导致了它),但在这里我可以看到该字段确实被重新初始化了。
我想每次单击按钮都会重新加载页面。这是真的吗?如果是这样 - 如何在没有静态变量的情况下克服这个问题(因为如果不止一个人同时访问同一页面怎么办......
public partial class _Default : System.Web.UI.Page
{
string s = "a";
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
s = "b";
}
protected void Button2_Click(object sender, EventArgs e)
{
here.InnerText = s;// "here" is an id.
//returns "a" despite Button1 having been clicked before.
}
}
添加您的代码 (EnableViewState)
每次请求(获取或发布)页面时,都会创建(然后销毁)_Default
类(派生System.Web.UI.Page
)的新实例,包含的控件也会发生同样的情况。
请参阅 ASP.NET 页面生命周期。
当 ASP.NET 页面运行时,该页面将经历一个生命周期,其中 它执行一系列处理步骤。这些包括 初始化、实例化控件、恢复和维护 状态、运行事件处理程序代码和呈现。重要的是 您了解页面生命周期,以便您可以在 预期效果的适当生命周期阶段。
您可以使用不同的技术(cookie、会话、缓存、视图状态等)保留一个值(在您的例子中是字段的值s
),另请参阅 ASP.NET 状态管理概述。