0

今、asp.net で Web アプリケーションを構築するための変更があります。ASP.net のスタイルは、私に奇妙なことをもたらします。最も難しい問題は、各 PostBack イベントの後 (ボタンをクリックしたとき) に変数の値を保存できなかったことです。Dynamic User Controls get and maintain values after postbacksという質問で 1 つの解決策を見てきましたが、コントロール とバインドする値にしか慣れていません。

今、私は2つの解決策について考えています:

  1. 上記の参考の質問のように、ページが PostBack するときにデータのバインドを解除します。変数をセッションに保存し、UnBind メソッドで、セッション内の変数にリロードします。
  2. ajax ボタンを使用する (すべてのページをリロードしない): 本当はこの方法を使用したいのですが、エラーになりやすいようです。asp.net で Ajax コントロールを使用するのは非常に難しいと感じています。

私のコード:

public class MainPage
{ 
    //variable 
    private List<string> lstName; 

    public MainPage()
    { 
        if (!IsPostBack)
        { 
           lstName = new List<string>(); 
        } 
    } 
}
4

1 に答える 1

0

ASP.NET 4.0 で Code Behind Page のプロパティを保存する方法を見つけました。

ViewState["variableName"] 変数を使用します。プロパティ (例: var ttsHandler) を保存する必要がある場合は、保存します: ViewState["ttsHandler"]=ttsHandler;

その値をロードする必要がある場合は、キャストを入力する必要があります。

ttsHandler=(TTSHandler) ViewState["ttsHandler"];

ただし、このソリューションは、シリアル化可能である必要があるため、既知のクラス型 (string、int ...) でのみ有効です。残念ながら、その Class Serializable を割り当てることができないプロパティがあります。

例: MyThread クラス (System.Thread.Threading のサブクラス) を割り当てる必要があり、デバッガーは Serializa System.Thread.Threading クラスにプロジェクトを要求しますが、それは不可能です。

ここで別の方法を使用する必要がありますが、これはあまり良くありません。ViewState の代わりに Session["var"] を使用しています。私はこれを処理するために最善を尽くします。あなたの助けをとてもうれしく思います。

于 2012-12-23T15:12:02.153 に答える