2016-05-31 13 views
1
namespace test 
{ 
    public partial class WebForm2 : System.Web.UI.Page 
    { 
     protected void Page_Load(object sender, EventArgs e) 
     { 

      List<Sticker> stickers = new List<Sticker>(); 
      //code that gets data from database and fills the list 

       for(int i = 0; i<stickers.Count;i++) 
       { 
        Panel1.Controls.Add(stickers[i]); 
       } 
     } 
    } 
    class Sticker : ImageButton 
    { 
     string StickerID { get; set; } 
     string PlayerName { get; set; } 
     DateTime Date { get; set; } 
     Label l; 
     public Sticker(string StickerID, string Extension, string PlayerName, DateTime Date,Label l) 
     { 
      //code for setting data 
      base.Click += new ImageClickEventHandler(Sticker_Click); 
     } 

     void Sticker_Click(object sender, ImageClickEventArgs e) 
     { 
      l.Text = StickerID; 

     } 
    } 
} 

ImageButtonをクリックすると、StickerIDが書き込まれますが、どのクラスインスタンスが特定のユーザーに属しているのか、このデータはどこに保管されているのですか?クラスメンバーがasp net webformsに保存されている場所/方法

私がセッションをチェックし、それにゼロのエントリを持って、クラスのデータが存在保管されていないのいずれか

+0

あなたのサイトがデータをどのように格納しているかをSOコミュニティが知る方法はありません。コードを読んだり、デバッグしたりして、理解してください。 –

答えて

0

インスタンス変数は、フレームワークによって保持されませんクライアント側のViewStateをデコード。現在の要求が終了すると破棄されます。状態を維持する場合は、手動でそれらを保持する必要があります。

ASP.NETは、要求を超えて永続メモリ内状態を保持しません。それは反パターンです。

+0

私が実際に混乱させるのは、ImageButtonsをクリックして対応するStickerIDを取得したときです。クラスインスタンスを保持していないのでnullが返されるか、または初期化されません。 – qweqrator

+0

おそらく同じリクエストでその変数を初期化しています。または、データバインディングを使用していますか?この場合、フレームワークはViewStateを通じて状態を把握できます。 – usr

+0

それは、私は空の値(値= "")で要求を行うと、ViewStateで必要なデータを保持しているように見える、ラベルはそのままです – qweqrator

関連する問題