1

aspボタンを1回クリックして別の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

ページを要求 (取得または投稿) するたびに、_Defaultクラス (派生System.Web.UI.Page) の新しいインスタンスが作成 (および破棄) され、含まれているコントロールでも同じことが起こります。

ASP.NET ページのライフ サイクルを参照してください。

ASP.NET ページが実行されると、ページは一連の処理手順を実行するライフ サイクルを通過します。これには、初期化、コントロールのインスタンス化、状態の復元と維持、イベント ハンドラー コードの実行、およびレンダリングが含まれます。ページのライフ サイクルを理解して、目的の効果を得るために適切なライフ サイクル ステージでコードを記述できるようにすることが重要です。

sさまざまな手法 (cookie、session、cache、viewstate など) を使用して値 (この場合は field の値) を永続化できます。ASP.NET State Management Overviewも参照してください。

于 2012-06-28T20:33:45.197 に答える
2

コードに追加します (EnableViewState)

于 2012-06-28T20:32:39.707 に答える