3

まず第一に、私はASP.NETWebFormsの経験がありません。しかし、私は時々メンテナンスをしなければならない非常に古いWebFormアプリケーションを継承しました。これはそのような状況です:

プライベートインスタンス変数を持つユーザーコントロールがあります。問題は、これらのインスタンス変数の値が失われることです。おそらく、ページのリロード後に失われます。これまでにわかったことは、コントロールクラスが頻繁に再作成されるように見えることです。役立つのは、次の質問への回答です。

  • WebFormユーザーコントロールは状態を維持しますか?
  • はいの場合、それは一般的にどのように行われますか(詳細についてはオンラインリソースへのポインタを高く評価します)
  • いいえの場合、それを何らかの方法で実装できますか?サンプルはありますか?
4

1 に答える 1

5

おそらく、状態を維持するための最も一般的な方法は、プライベートインスタンスフィールドではなくViewStateを使用することです。たとえば、UserControlにプロパティが含まれている場合はText、次のように定義できます。

public string Text
{
    get { return (string) ViewState["Text"]; }
    set { ViewState["Text"] = value; }
}

プロパティを子コントロールに委任することもできます。この場合、子コントロールはViewStateを維持します(提供されている場合EnableViewStatetrue。例えば:

public string Text
{
    get { return MyTextBox.Text; }
    set { MyTextBox.Text = value; }
}

詳細については、 GoogleをViewStateご覧ください。落とし穴があり、それを完全に理解することをお勧めします。

于 2012-06-14T09:06:37.893 に答える