2016-12-18 128 views
0

我有一個test.ascx.page,其中包含一個文本框控件。如何在ASP.NET中的頁面之間保留TextBox控件文本值?

該控件的值由另一個頁面test2.aspx.cs設置。

我想在用戶會話級別和跨頁面保留文本框(txtNo)的值,所以目前我通過將TextBox定義爲靜態控件來完成此操作。

test.ascx.cs 

     public static TextBox txtNo 
     public TextBox no 
     { 
      set { txtNo= value; } 
      get { return txtURN; } 
     } 


test2.aspx.cs 
//txtNumber is a texbox control 
test.no= txtNumber; 
txtNumber.text= test2.no.Text; 

靜態varaibles有線程安全的問題,有沒有做任何的替代品?

謝謝!

+2

靜是不是一個解決方案是基於網絡的應用 –

+0

@EhsanSajjad ..是的,任何想法,我們如何能做到這一點與會話?我想保留在TextBox txtNo的價值。 – Harshit

+0

@SunilDhami檢查我的答案... – DiegoS

回答

0

如果你想維護頁面之間的信息,你正在尋找ASP .NET State Management。您可以在不同的口味進行選擇:

  • 視圖狀態
  • 控制狀態
  • 隱藏字段
  • 餅乾
  • 查詢字符串
  • 應用程序狀態
  • 會話狀態
  • 配置文件屬性

我將解釋最常用的方法:

  1. 使用Session State保存與屬性的對象,會話變量時您的網站上他的登錄時段是在爲同一個用戶在每一頁可用。因此,在您test.ascx保存像變量:

Session["myTextBox"]= myTextbox;

將在您的test2.aspx頁面與方法可用:

Object txtBox1 = Session["myTextBox"];

  • 使用Query String可通過以下URL將數據傳遞到下一頁:
  • ~/test2.aspx?textNo=4&textName=someName

    將在test2.aspx頁面與Page_Load方法可用:

    protected void Page_Load(object sender, EventArgs e) 
        { 
         int textNo = Request.QueryString["textNo"]; 
         string textName = Request.QueryString["textName"]; 
        } 
    
    +0

    是myTextBox的控件嗎? – Harshit

    +0

    @SunilDhami它不應該是一個控制。它可以是一個Class或Value,如果你只需要存儲文本,你可以保存該值(用示例中的數字代替Textbox)。告訴我你需要存儲什麼,我會更新我的答案 – DiegoS

    +0

    我試圖在測試中設置ascx文件的文本框txtNo。no = txtNumber aspx.cs文件。 – Harshit

    相關問題