1

在单击一个 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.
    }
}
4

2 回答 2

2

添加您的代码(EnableViewState)

于 2012-06-28T20:32:39.707 回答
2

每次您请求(获取或发布)页面时,都会创建(然后销毁)_Default类的新实例(派生),包含的控件也会发生同样的情况。System.Web.UI.Page

请参阅ASP.NET 页面生命周期

当 ASP.NET 页面运行时,页面会经历一个生命周期,在该生命周期中它会执行一系列处理步骤。其中包括初始化、实例化控件、恢复和维护状态、运行事件处理程序代码和呈现。了解页面生命周期对您来说很重要,这样您就可以在适当的生命周期阶段编写代码以获得您想要的效果。

您可以使用不同的技术(cookie、会话、缓存、视图状态等)持久化一个值(在您的情况下是 field 的值s),另请参见ASP.NET 状态管理概述

于 2012-06-28T20:33:45.197 回答