日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

ASP.NET 网页之间传递值

發布時間:2023/12/9 asp.net 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ASP.NET 网页之间传递值 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

如果您的應用程序從一個 ASP.NET 網頁重定向(導航)到另一個 ASP.NET 網頁,您經常希望將信息從源頁傳遞到目標頁。例如,您可能具有一個頁面,用戶可以從中選擇要購買的商品。當用戶提交該頁時,您希望調用其他頁,以處理用戶輸入的信息。

可以采用各種方式在頁之間傳遞信息,某些方式取決于重定向的方式。包括以下選項:

  • 使用查詢字符串,該字符串可將信息追加到目標頁的 URL 上。使用 HyperLink 控件將導航內置于頁中時,或使用 Redirect 方法以編程方式重定向到其他頁時,都可以使用查詢字符串。

    即使這些頁不在同一個 Web 應用程序中,也能使用查詢字符串傳遞值;如果要將信息傳遞到非 ASP.NET 網頁的頁中,也可以采取這種方式。如果目標頁是一個 ASP.NET 網頁,則可從 HttpRequest 對象的 QueryString 屬性中讀取查詢字符串的值。

    注意:

    請永遠不要使用查詢字符串傳遞敏感數據,因為查詢字符串中的信息對用戶是可見的,而且很容易被修改,因此會帶來潛在的安全風險。

  • 使用會話狀態可以存儲信息,隨后可從當前應用程序的所有 ASP.NET 網頁中訪問這些信息。但是,這種方法會占用服務器內存,并且其信息將在會話過期之前一直存儲在內存中,因而與直接向下一頁傳遞信息相比,其系統開銷更大。有關詳細信息,請參見 ASP.NET 狀態管理概述。

  • 在目標頁上,直接讀取源頁中的控件值和公共屬性值。此策略適用于以下兩種情況:當源頁跨頁發送到目標頁時(有關更多信息,請參見如何:將 ASP.NET 網頁發送到另一頁),以及調用 Transfer 方法在服務器上將執行從源頁轉到目標頁時。將在本主題中對從源頁直接讀取值的策略進行說明。

從源頁獲取公共屬性值

如果源頁專門設計為與目標頁共享信息,并且這兩個頁都是 ASP.NET 網頁,則可以在源頁中添加公共屬性,用于公開要在頁之間共享的信息。然后,可以在目標頁中讀取這些屬性的值。

注意:

僅當這兩個頁位于同一個 Web 應用程序中時,才能在目標頁中讀取源頁屬性。

從源頁獲取公共屬性值

  • 在源頁中,創建一個或多個公共屬性。

    下面的代碼示例演示一個名為 CurrentCity 的屬性,該屬性公開名為 textCity 的 TextBox 控件的值。

    Visual Basic?復制代碼
    Public ReadOnly Property CurrentCity() As StringGetReturn textCity.TextEnd Get End Property

    ?

    C#?復制代碼
    public String CurrentCity {get{return textCity.Text;} }
    注意:

    在源頁上創建的、主要用于為跨頁發送公開值的屬性通常是只讀屬性。盡管源頁可以包含公共讀/寫屬性,但是通過目標頁屬性設置源頁屬性一般沒有任何效果,因為不會保留此值。

  • 在目標頁上,添加一個指向源頁的 @ PreviousPageType 頁面指令。

    下面的代碼示例演示一個引用名為 SourcePage.aspx 的源頁的 PreviousPageType 指令。

    ?復制代碼
    <%@?PreviousPageType VirtualPath="~/SourcePage.aspx" %>

    PreviousPageType 指令會導致頁的 PreviousPage 屬性被類型化為源頁類。

  • 在目標頁代碼中,使用 PreviousPage 屬性的強類型成員讀取源代碼屬性。

    下面的代碼示例讀取源頁中定義的 CurrentCity 屬性的值。

    Visual Basic?復制代碼
    Label1.Text = PreviousPage.CurrentCity

    ?

    C#?復制代碼
    Label1.Text = PreviousPage.CurrentCity;
  • 從同一個應用程序的源頁中獲取控件信息

    如果源頁和目標頁都是 ASP.NET 網頁,并且位于同一個 Web 應用程序中,則可以在目標頁中讀取源頁中的控件值。如果源頁不公開包含所需信息的公共屬性,則可以使用此策略。

    從同一個應用程序的源頁中獲取控件值

    • 在目標頁中,通過使用目標頁的 PreviousPage 屬性獲取對源頁的引用,然后調用 FindControl 方法獲取對所需控件的引用。

      下面的代碼示例獲取源頁的 TextBox1 控件的值,并將其顯示在名為 Label1 的控件中:

      Visual Basic?復制代碼
      If Not Page.PreviousPage Is Nothing ThenDim SourceTextBox As TextBoxSourceTextBox = CType(PreviousPage.FindControl("TextBox1"), _TextBox)If Not SourceTextBox Is Nothing ThenLabel1.Text = SourceTextBox.TextEnd If End If

      ?

      C#?復制代碼
      if (Page.PreviousPage != null) {TextBox SourceTextBox = (TextBox)Page.PreviousPage.FindControl("TextBox1");if (SourceTextBox != null){Label1.Text = SourceTextBox.Text;} }
      注意:

      FindControl 方法用于查找當前命名容器中的控件。如果正在查找的控件位于其他控件中(通常位于模板中),則必須首先獲取對該容器的引用,然后搜索該容器,以查找要獲取的控件。

    從其他應用程序的源頁中獲取發送信息

    如果源頁和目標頁不在同一個 Web 應用程序中,則可以在目標頁中讀取源頁的發送的值。如果目標頁是 ASP.NET 網頁,但源頁不是,則也可以使用此技術。注意,只能獲取發送的值,而無法讀取頁中的任意控件的值。

    從其他應用程序的源頁中獲取控件值

    • 在目標頁中,讀取 Form 集合,此集合返回名稱/值對的字典(每一個發送的值對應一個名稱/值對)。

      下面的代碼示例演示源頁中每個發送的控件的 ID 和值,并在名為 Label1 的標簽中顯示發送的值。

      注意:

      ASP.NET 網頁中的發送信息包括隱藏字段的值,如 __VIEWSTATE__EVENTTARGET__EVENTARGUMENT,這些值在頁中進行內部處理時使用。下面的代碼示例排除以兩個下劃線 (__) 作為開頭命名的發送字段的值。

      Visual Basic?復制代碼
      Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) _Handles Me.LoadDim displayValues As New StringBuilder()Dim postedValues As NameValueCollection = Request.FormDim nextKey As StringFor i As Integer = 0 To postedValues.AllKeys.Length - 1nextKey = postedValues.AllKeys(i)If nextKey.Substring(0, 2) <> "__" ThendisplayValues.Append("<br>")displayValues.Append(nextKey)displayValues.Append(" = ")displayValues.Append(postedValues(i))End IfNextLabel1.Text = displayValues.ToString() End Sub

      ?

      C#?復制代碼
      void Page_Load(object sender, EventArgs e) {System.Text.StringBuilder displayValues = new System.Text.StringBuilder();System.Collections.Specialized.NameValueCollection postedValues = Request.Form;String nextKey;for(int i = 0; i < postedValues.AllKeys.Length - 1; i++){nextKey = postedValues.AllKeys[i];if(nextKey.Substring(0, 2) != "__"){displayValues.Append("<br>");displayValues.Append(nextKey);displayValues.Append(" = ");displayValues.Append(postedValues[i]);}}Label1.Text = displayValues.ToString(); }

    轉載于:https://www.cnblogs.com/randomize/archive/2013/06/13/3134352.html

    總結

    以上是生活随笔為你收集整理的ASP.NET 网页之间传递值的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。