0

syste.web.ui.webcontrols.button からコントロールを取得しています。私はそれをbuttonv2と呼んでいます。次に、この新しいクラス「int abc」に任意のプロパティを追加し、その値をビューステートに格納する get/set アクセサーを介してアクセスします (ビューステート値が null の場合も 0 を返します。設定せずにアクセスします)。

ここで、'abc' に値を指定してからデバッグ モードで監視すると、アクセサの 'set' 部分に問題なくヒットし、指定した値 (つまり 55) が入力され、その後すぐにいくつかの値にヒットします。私のコード「if (abc >0){}」の一部で、ビューステートから値を 0 として取得します!

これは、asp.net の「スキン」を使用し、スキン ファイルに「abc」の値を事前設定している場合にのみ発生します。(つまり) スキンファイルの読み取り:<asp:buttonv2 runat="server" SkinID="bob" abc="55" />

そして、私のページで私が使用<asp:buttonv2 runat="server" SkinID="bob" />していて、私の問題はabcが常に0に等しいですか?!

4

1 に答える 1

1

ビューステートは OnInit が完了した後にのみ保存されるのに対し、コントロールの初期化中にスキンパラメーターが割り当てられると思います

MS から: 「ページ要求に対して OnInit メソッドが実行された後にのみ、これらの属性への変更を追跡し、ページまたはコントロールのビュー ステートへの変更を保存します。」

http://msdn.microsoft.com/en-us/library/ms178472.aspx

http://msdn.microsoft.com/en-us/library/system.web.ui.statebag.aspx

多くのための。

"set" で値をローカル変数に割り当て、ページの init/load で "get" からビューステートに追加するとどうなりますか?

于 2009-04-02T21:11:51.743 に答える