C#開發學習——.net C#中頁面之間傳值傳參的方法以及內置對象

1.QueryString是一種很是簡單的傳值方式,他能夠將傳送的值顯示在瀏覽器的地址欄中。若是是傳遞一個或多個安全性要求不高或是結構簡單的數值時,可使用這個方法。可是對於傳遞數組或對象的話,就不能用這個方法了。下面是一個例子:
 
private void Button1_Click(object sender, System.EventArgs e)
{ string s_url;
s_url = " b.aspx?n ame=" + Label1.Text;
Response.Redirect(s_url);
}
b.aspxC#代碼
private void Page_Load(object sender, EventArgs e)
{
Label2.Text = Request.QueryString["name"];
}
 
query傳值又分類post ,get格式如:
//post請求
string name = Request["name"].toString();
string name =Request.Form.Get("name").toString();
//get請求
string name = Request.QueryString["name"].toString();
 
但我發現 不管是post 和 get 傳值均可用
string name = Request["name"].toString();
 
表單提交中get和post方式的區別概括以下幾點:
1. get是從服務器上獲取數據,post是向服務器傳送數據。 
2. get是把參數數據隊列加到提交表單的ACTION屬性所指的URL中,值和表單內各個字段一一對應,在URL中能夠看到。post是經過HTTP post機制,將表單內各個字段與其內容放置在HTML HEADER內一塊兒傳送到ACTION屬性所指的URL地址。用戶看不到這個過程。 
3. 對於get方式,服務器端用Request.QueryString獲取變量的值,對於post方式,服務器端用Request.Form獲取提交的數據。 
4. get傳送的數據量較小,不能大於2KB。post傳送的數據量較大,通常被默認爲不受限制。但理論上,IIS4中最大量爲80KB,IIS5中爲100KB。 
5. get安全性很是低,post安全性較高。
2.  使用Application 對象變量
  Application對象的做用範圍是整個全局,也就是說對全部用戶都有效。其經常使用的方法用Lock和UnLock。
a.aspx的C#代碼
private void Button1_Click(object sender, System.EventArgs e)
{
Application["name"] = Label1.Text; Server.Transfer("b.aspx");
}
b.aspx中C#代碼
private void Page_Load(object sender, EventArgs e)
{
string name;
Application.Lock();
name = Application["name"].ToString();
Application.UnLock();
}
 
3.  使用Session變量
  想必這個確定是你們使用中最多見的用法了,其操做與Application相似,做用於用戶我的,因此, 過量的存儲會致使服務器內存資源的耗盡。
a.aspx的C#代碼
private void Button1_Click(object sender, System.EventArgs e)
{
Session["name"] = Label.Text;
}
b.aspx中C#代碼
private void Page_Load(object sender, EventArgs e) {
string name;
name = Session["name"].ToString();
}
 
4.  使用Cookie對象變量
  這個也是你們常使用的方法,與Session同樣,其是什對每個用戶而言的,可是有個本質的區別,即Cookie是存放在客戶端的,而session是存放在服務器端的。並且Cookie的使用要配合ASP.NET內置對象Request來使用。
a.aspx的C#代碼
private void Button1_Click(object sender, System.EventArgs e)
{
HttpCookie cookie_name = new HttpCookie("name");
cookie_name.Value = Label1.Text;
Reponse.AppendCookie(cookie_name);
Server.Transfer("b.aspx");
}
b.aspx中C#代碼
private void Page_Load(object sender, EventArgs e)
{
string name; name = Request.Cookie["name"].Value.ToString();
}
5.  使用Server.Transfer方法
  這個才能夠說是面象對象開發所使用的方法,其使用Server.Transfer方法把流程從當前頁面引導到另外一個頁面中,新的頁面使用前一個頁面的應答流,因此這個方法是徹底面象對象的,簡潔有效。
 
a.aspx的C#代碼
public string Name {
get{ return Label1.Text;}
}
private void Button1_Click(object sender, System.EventArgs e) {
Server.Transfer("b.aspx");
}
b.aspx中C#代碼
private void Page_Load(object sender, EventArgs e) {
a newWeb; //實例a窗體
newWeb = (source)Context.Handler;
string name; name = newWeb.Name;
}
 
下面介紹一下傳值缺點和優勢
cookie
     方式:將數據存在客戶端的經典方法。
     缺點:安全性低、受客戶端設置限制、一個站點僅存20個cookie,每一個容量4096字節。
Session
     方式:將用戶數據存儲在服務端。
     特色:asp.net中能夠設置session的存儲方式、位置、SessionID的保存是否依賴cookie。
             能夠直接存儲對象。 
     缺點:asp.net中有失效的隱患
Cache
     方式:將用戶數據存儲在服務端數據緩存中。 
     特色:能夠大大提升效率。 能夠直接存儲對象。
Appliction
     方式: 將數據存儲於此,至關於全局變量。 
     特色:能夠直接存儲對象。整個站點的共享數據
ViewState
     方式:asp.net特有機制,用來恢復頁面狀態。 
     特色:將頁面各控件及其所存數據序列化存在name爲_ViewState的隱藏域中。
     缺點:存在HTML中,安全性較低。能夠設置加密和驗證,但數據量會大增、效率有影響。
Static
     方式: 將數據存於靜態變量中。 
     特色:利於提升效率。
     缺點:若用很差會導致用戶或頁面間數據紊亂,形成極大的隱患。建議只賦值一次,絕對禁止爲單個用戶而更改此值。
 
 
 
ASP.NET 內置對象包括 1.Response 2.Request  3.Server  4.Application   5.Session   6.Cookie
1 Request對象主要是讓服務器取得客戶端瀏覽器的一些數據,包括從HTML表單用Post或者GET方法傳遞的參數、Cookie和用戶認證。
2 Request對象是Page對象的成員之一。
3 程序中不須要作任何的聲明便可直接使用;其類名爲 HttpRequest屬性不少,但方法不多,只有一個BinaryRead()
1.使用Request.Form屬性獲取數據
  經過該屬性,讀取之間的表單數據.
注意:提交方式要設置爲「Post」。與Get方法相比較,使用Post方法能夠將大量數據發送到服務器端
2.利用Request.QueryString屬性獲取數據
  Request對象的QuerySting屬性能夠獲取 HTTP 查詢字符串變量集合 。 經過該屬性,咱們能夠讀取地址信息  http://localhost/aaa.aspx?uid=tom&pwd=abc其中標識爲紅色部分的數據.注意:提交方式要設置爲「Get」
3.問題:Request.Form用於表單提交方式爲Post的狀況,而Request.QueryString用於表單提交方式爲Get的狀況,若是用錯,則獲取不到數據。
解決方法:利用Request(「元素名」)來簡化操做。
 
Response對象:將數據從服務器發送到瀏覽器
     1. <%=…%>Response.Write("alert('歡迎學習ASP.NET')")
   Response.Write(" ")
   2.Response對象的Redirect方法將客戶端瀏覽器重定向到另外的URL上,即跳轉到另外一個網頁。例如:Response.Redirect("http://www.example.com/")  
  3. Response.End() 終止當前頁的運行
  4.Response.WriteFile(FileName)其中:FileName 指代需向瀏覽器輸出的文件的文件名
Server對象提供對服務器上的方法和屬性進行的訪問 .其類名稱是HttpServerUtility.
  Server對象的主要屬性有
  MachineName:獲取服務器的計算機名稱。
  ScriptTimeout:獲取和設置請求超時(以秒計)。
 
方法名稱 說明
  CreateObject 建立 COM 對象的一個服務器實例。
  Execute 執行當前服務器上的另外一個aspx頁,執行完該頁後再返回本頁繼續執行
  HtmlEncode 對要在瀏覽器中顯示的字符串進行HTML編碼並返回已編碼的字符串。
  HtmlDecode 對HTML編碼的字符串進行解碼,並返回已解碼的字符串。
  MapPath 返回與 Web 服務器上的指定虛擬路徑相對應的物理文件路徑。
  Transfer 終止當前頁的執行,併爲當前請求開始執行新頁。
  UrlEncode 將表明URL的字符串進行編碼,以便經過 URL 從 Web 服務器到客戶端進行可靠的 HTTP 傳輸。
  UrlDecode 對已被編碼的URL字符串進行解碼,並返回已解碼的字符串。
  UrlPathEncode 對 URL 字符串的路徑部分進行 URL 編碼,並返回已編碼的字符串。
  編碼:Server.HtmlEncode(「HTML代碼」)
  解碼:Server.HtmlDecode(「已編碼的HTML」)
  1.Server對象的MapPath方法將虛擬路徑或相對於當前頁的相對路徑轉化爲Web 服務器上的物理文件路徑。 
語法:
Server.MapPath(「虛擬路徑」)
String FilePath
FilePath = Server.MapPath(「/」)
Response.Write(FilePath)
 
 
Application對象在實際網絡開發中的用途就是記錄整個網絡的信息,如上線人數、在線名單、意見調查和網上選舉等。在給定的應用程序的多有用戶之間共享信息,並在服務器運行期間持久的保存數據。並且Application對象還有控制訪問應用層數據的方法和可用於在應用程序啓動和中止時觸發過程的事件。
 
 1.使用Application對象保存信息Application(「鍵名」) = 值或Application(「鍵名」,值)
獲取Application對象信息變量名 = Application(「鍵名」)
或:變量名 = Application.Item(「鍵名」)
或:變量名 = Application.Get(「鍵名」) 更新Application對象的值
  Application.Set(「鍵名」, 值)
  刪除一個鍵
  Application.Remove(「鍵名」, 值)
  刪除全部鍵
  Application.RemoveAll()或Application.Clear()
2.有可能存在多個用戶同時存取同一個Application對象的狀況。這樣就有可能出現多個用戶修改同一個Application命名對象,形成數據不一致的問題。HttpApplicationState 類提供兩種方法 Lock 和 Unlock,以解決對Application對象的訪問同步問題,一次只容許一個線程訪問應用程序狀態變量。
  關於鎖定與解鎖
  鎖定:Application.Lock()
  訪問:Application(「鍵名」) = 值
  解鎖:Application.Unlock()
  注意:Lock方法和UnLock方法應該成對使用。  可用於網站訪問人數,聊天室等設備。
3. 使用Application事件 
  在ASP.NET 應用程序中能夠包含一個特殊的可選文件——Global.asax 文件,也稱做ASP.NET 應用程序文件,它包含用於響應 ASP.NET或HTTP模塊引起的應用程序級別事件的代碼。Global.asax 文件提供了7個事件,其中5個應用於Application對象 
  事件名稱 說明
  Application_Start 在應用程序啓動時激發
  Application_BeginRequest 在每一個請求開始時激發
  Application_AuthenticateRequest 嘗試對使用者進行身份驗證時激發
  Application_Error 在發生錯誤時激發
  Application_End 在應用程序結束時激發
 
 
Session即會話,是指一個用戶在一段時間內對某一個站點的一次訪問。
Session對象在.NET中對應HttpSessionState類,表示「會話狀態」,能夠保存與當前用戶會話相關的信息。
Session對象用於存儲從一個用戶開始訪問某個特定的aspx的頁面起,到用戶離開爲止,特定的用戶會話所須要的信息。用戶在應用程序的頁面切換時,Session對象的變量不會被清除。對於一個Web應用程序而言,全部用戶訪問到的Application對象的內容是徹底同樣的;而不一樣用戶會話訪問到的Session對象的內容則各不相同。Session能夠保存變量,該變量只能供一個用戶使用,也就是說,每個網頁瀏覽者都有本身的Session對象變量,即Session對象具備惟一性。
(1)將新的項添加到會話狀態中
   語法格式爲:
  Session ("鍵名") = 值
  或者
  Session.Add( "鍵名" , 值)
(2)按名稱獲取會話狀態中的值
  語法格式爲:
  變量 = Session ("鍵名")
  或者
  變量 = Session.Item("鍵名")
(3)刪除會話狀態集合中的項
  語法格式爲:Session.Remove("鍵名")
(4)清除會話狀態中的全部值
  語法格式爲:Session.RemoveAll()
  或者Session.Clear()
(5)取消當前會話
  語法格式爲:Session.Abandon()
(6)設置會話狀態的超時期限,以分鐘爲單位。
  語法格式爲:Session.TimeOut = 數值
  Global.asax 文件中有2個事件應用於Session對象
  事件名稱 說明
  Session_Start 在會話啓動時激發
  Session_End 在會話結束時激發
 
 
 Cookie就是Web服務器保存在用戶硬盤上的一段文本。Cookie容許一個Web站點在用戶的電腦上保存信息而且隨後再取回它。信息的片段以‘鍵/值’對的形式存儲。
  Cookie是保存在客戶機硬盤上的一個文本文件,能夠存儲有關特定客戶端、會話或應用程序的信息,在.NET中對應HttpCookie類。
有兩種類型的Cookie:會話Cookie(Session Cookie)和持久性Cookie。
前者是臨時性的,一旦會話狀態結束它將不復存在;
後者則具備肯定的過時日期,在過時以前Cookie在用戶的計算機上以文本文件的形式存儲。在服務器上建立並向客戶端輸出Cookie能夠利用Response對象實現。
 
HttpCookie cookie = Request.Cookie["user"];//建立cookie對象
cookie.Expires = DateTime.MaxValue;//設置過時時間
cookie.Values.Add("Iaddress",a);//添加Cookie值
Response.AppendCookie(cookie); //將cookie添加到服務器相應
response.cookies[""].Values = 數據;//寫入數據,將服務器端的數據寫入客戶端
string c =request. cookie.Values["address"];//讀取數據
相關文章
相關標籤/搜索