2010-11-29 61 views
0

我剝離了我的解決方案,以便我可以理解爲什麼這不起作用。希望有人能幫忙。單擊動態鏈接按鈕時維護變量

只有一個aspx頁面上的佔位符控件:

<asp:PlaceHolder ID="Placeholder1" runat="server" /> 

在後面的代碼,我設置了一個名爲測試並在Page_Load中的變量,改變變量別的東西。爲什麼,當我點擊動態添加LinkBut​​ton的,在測試變量沒有維護它的狀態:

public string test = "Hello"; 

    protected void Page_Load(object sender, EventArgs e) 
    { 
     if (!IsPostBack) 
     { 
      Response.Write(test + "<br />"); //test = "Hello" 
      test = "Hello World!"; 
      Response.Write(test + "<br />"); //test = "Hello World!" 
     } 
     Placeholder1.Controls.Clear(); 
     CreateDynamicControl(); 
    } 

    private void CreateDynamicControl() 
    { 
     LinkButton lnk = new LinkButton(); 
     lnk.Click += new EventHandler(lbl_Click); 
     lnk.Text = "TEST LinkButton"; 
     Placeholder1.Controls.Add(lnk); 
    } 

    void lbl_Click(object sender, EventArgs e) 
    { 
     LinkButton lnk = sender as LinkButton; 
     Response.Write("lbl_Click: " + test + "<br />"); 
    } 

回答

0

在ASP.NET中的變量不保持回發之間的狀態。您可以使用Session或ViewState來保存您需要的值。

ViewState["test"] = "Hello World!"; 
Response.Write(ViewState["test"]); 
+0

由於我對解決方案感到厭倦,實際上我需要在回發期間維護一個Collection。我仍然應該使用ViewState甚至是Session嗎?哪個更好? – user2569353 2010-11-29 18:54:12