簡體   English   中英

ASP.NET網頁回發

[英]ASP.NET Web Page Postback

我在頁面內貼有一個類級別的價格變量,如下所示:

public partial class _Default : System.Web.UI.Page 
{
    private MyClass myVar = new MyClass();

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            myVar.LoadData();
            myVar.ShowData();
        }
    }

    protected void cmdRefresh_Click(object sender, EventArgs e)
    {
        myVar.ShowData();
    }
}

我的問題是,在初始加載后,第一次按下該按鈕時,似乎重置了myVar,並且其所有數據都丟失了。 這是ASP.NET的已知問題,是否有解決方法?

如果只需要為當前頁面保存類,請使用ViewState存儲類。 如果您想將其保存到整個站點,請查看Sessions

private MyClass myClass
{
    get {
      if (this.ViewState["myVar"] != null)
      {
           return (MyClass)this.ViewState["myVar"];
      }
    }
set{
     this.ViewState["myVar"] = value;
}
}

變量myVar將永遠不會在回發之間持久化,您需要使用某種緩存方法,例如Application / Session / ViewState / Cookie。

是的,這是已知功能。 基本上,頁面對象是為每個請求創建的,因此為您設置了屬性(IsPostBack是其中的一個),但是您需要自行采取措施以確保每次都填充字段(在代碼中聲明)。 在這種特定情況下,要么通過獲取它們,要么將它們保持在表單(視圖狀態)或會話數據中。 選擇哪一個取決於數據大小,重新提取時間,數據存儲負載等。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM