我想在回發期間使用ViewState保留我的文本框的輸入。這裏是代碼:隱藏ViewState ASPX代碼不保存
private Label store_Incident_Number = new Label();
private TextBox Incident_Number = new TextBox();
protected void Page_Load(object sender, EventArgs e)
{
if (ViewState["Incident_Number"] != null)
{
store_Incident_Number.Text = "TEST" + (string)ViewState["Incident_Number"];
Panel1.Controls.Add(store_Incident_Number);
}
}
void Page_PreRender(object sender, EventArgs e)
{
ViewState.Add("Incident_Number", Incident_Number.Text);
}
上面的代碼位於我的default.aspx.cs(後面的代碼)。 Panel1
是一個asp控件,它位於表單標籤之外的網頁上。我試圖按照這個例子:https://msdn.microsoft.com/en-us/library/ms227551(v=vs.85).aspx
我希望Incident_Number文本框的文本保存到頁面回發後的標籤上,但它似乎並沒有工作,我不知道這個問題。請注意,文本框會動態添加到頁面的表單中,並在每次回發時重新創建。我的問題是我如何在頁面回發後保留文本框的值?
編輯:修正了!請看我接受的答案。此外,在Page_Init期間任何可能觸發另一個回發 的事件處理程序 或其他進程都將刷新您在viewstate中保存的值(即保存的文本不存在)。
我覺得你的工作難度比你需要。如果您在ASP.NET WebForms環境中使用控件,只要正確處理頁面生命週期,許多(包括TextBox)都具有自動視圖狀態管理。將TextBox添加到Page_Init事件中的窗體中,然後在Page_Load事件發生前(假設它每次具有相同的ID),它的視圖狀態將自動恢復,以便用戶輸入的文本將被保留。 – user2638401