为什么在 ASP.Net 中单击按钮后会擦除字段的值?



我需要一个字段来存储一个 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 状态管理概述。

最新更新