2012-09-05 118 views
0

我在ASP.NET 3.5中有兩個頁面,我需要從第一頁訪問/讀取Web控件值,但是在第二頁上。第二頁正在顯示一個鏈接,沒有後期事件或類似的東西。訪問網絡控制值

我想我應該使用ViewState,但它看起來這麼複雜的任務,所以請讓我知道一個更好的方法來實現這一點。我使用C#和Visual Studio

P.S 2010

+0

這一個將幫助你.. http://www.mikesdotnetting.com/Article/192/Transferring-Data-Between-ASP.NET-Web-Pages – naveen

+0

@naveen,我要去看看那裏, 謝謝! – m0dest0

回答

1

快速& 「髒」:其持有的信息傳遞會話變量。

在第一頁:

Session["ValueToPassToOtherControl"] = "The value"; 

在第二頁:

var value = Session["ValueToPassToOtherControl"]; 

優雅:你需要以任何方式來管理你的狀態(通過靜態管理,其功能是存儲和檢索該信息,但那也將是變量)。問題是HTTP is stateless。所以你需要通過某種存儲和檢索數據來繞過這個限制。

您建議使用ViewState但忘記了它,ViewState是ASP.NET Web頁面使用的一種技術,用於通過回發持久更改Web窗體的狀態,這與您的方案中沒有發生的情況相同。

+1

我使用會話變量,因爲它簡單快捷。謝謝。 – m0dest0

4

如果我理解正確,您有兩個.aspx頁面,並且您希望一個頁面與另一個頁面共享信息。第一頁是否鏈接到第二頁?

我問,因爲有幾種方法可以採取。您可以使用您要發送的信息將鏈接添加到第二頁鏈接中的查詢字符串中。您也可以使用會話臨時存儲信息。

例如:

<asp:HyperLink NavigateUrl="www.<yoursite>.com/firstpage.aspx?eggs=1&bacon=yum" Text="Awesome Site" runat="server" /> 

在第二頁,你會在Page_Load

string eggs = Request.QueryString["eggs"]; 
string bacon = Request.QueryString["bacon"]; 

有這樣的代碼隱藏現在,你必須從兩個頁面提供一個頁面的價值。

另一種方法可能是使用像這樣的會議:

第一頁:

Session["bacon"] = "Yum"; 

第二頁:

string bacon = (string)Session["bacon"]; 

不過,我建議不要過度使用會話來傳遞信息在頁面之間。

1

有一個更好的方法,使用QueryString jugglery和Session值。
您可以使用在跨頁面發佈期間設置的上一頁屬性。

使用ASP鏈接按鈕:

<asp:LinkButton runat="server" id="myLink" 
    NavigateUrl="~/Page2.aspx" 
    target="_blank" Text="Go to page 2"></asp:LinkButton> 

然後在Page2.aspx.cs

獲取從Page.PreviousPage值如下:

TextBox txtUser = (TextBox)Page.PreviousPage.FindControl("txtUser"); 
TextBox txtSomeValue = (TextBox)Page.PreviousPage.FindControl("txtSomeValue"); 

使用這些作爲你需要在你的第二頁。

+0

+1,該方法看起來很有趣,謝謝你的建議 – m0dest0