1、Page_Load事件中的!Page.isPostBack:
Page_Load子程式在每次頁面載入的時候都會運行。如果只想在第一次載入此頁面的時候執行Page_Load中的代碼,可以使用Page.IsPostBack屬性。如果Page.IsPostBack屬性為false,頁面是第一次被載入,如果為true,則頁面是被“投遞”(post)回伺服器。
舉例子:
protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { //判斷是否是第一次載入頁面,如果是第一次載入頁面則把文字框的內容清空 this.txtUserName.Text = ""; this.txtUserPwd.Text = ""; } }
說明:如果Page.IsPostBack==false則文字框內容清空,表示頁面是第一次載入。
Page.IsPostBack表示是不是回傳動作.所謂的回傳就是在頁面載入以後,在本頁有提交伺服器的動作.Page.IsPostBack == true表示是回傳;為了響應用戶端的請求,Page.IsPostBack==false,所以正確應用好Page.IsPostBack能大大的提高應用程式的效能。
總結:
1)IsPostBack只有在第一次開啟的時候是false,其它時候都是true
2)每次頁面Load的時候,根據需要把每次都要載入的代碼放在IsPostBack中,只需要載入一次的代碼放在if(!IsPostBack)中。
3)每次使用者回傳伺服器任何資訊的時候,都會引發isPostBack屬性用來判斷此使用者是否曾經做過登陸或者其他事件
4)Post方式如果Request中沒有請求值,即Request.Form=null則IsPostBack=false;Get方式如果Request中沒有請求值,即Request.QueryString=null則IsPostBack=false。
5)一般情況判斷Request中如果沒有請求值則IsPostBack=false。如果有請求值但是不包括“__VIEWSTATE”等一些特殊的鍵或值,則IsPostBack=false(每次請求後.Net架構會將一些特殊的隱藏欄位“__VIEWSTATE”等返回給用戶端)。還有一些特殊的情形是上面的規則不能正確判斷的需要特殊處理的,這些情形包括Server.Transfer,Response.Redirect,CrossPagePostBack,Server.Execute,發生了頁面元素變化及重新編譯。
2、Request與Response的區別
Request是用戶端向伺服器發送請求;Response是伺服器向用戶端輸出資訊。
(1) Request的對象的屬性:
Form:獲得網頁中定義的表單變數的集合;
QueryString獲得以名/值對錶示的HTTP查詢字串變數的集合。變數值會在地址欄顯示,安全性不能保證。傳遞Form表單中的控制項值用Request.Form擷取值,地址欄中傳遞的參數用Request.QueryString擷取。
1>.get與post兩種提交的區別:
get是從伺服器上擷取資料,post是向伺服器傳送資料。
get是把參數資料隊列加到提交表單的ACTION屬性所指的URL中,值和表單內各個欄位一一對應,在URL中可以看到;post是通過HTTPpost機制,將表單內各個欄位與其內容放置在HTML HEADER內一起傳送到ACTION屬性所指的URL地址。使用者看不到這個過程。
對於get方式,伺服器端用Request.QueryString擷取變數的值,對於post方式,伺服器端用Request.Form擷取提交的資料.
get傳送的資料量較小,不能大於2KB。post傳送的資料量較大,一般被預設為不受限制。
get安全性非常低,post安全性較高,包含機密資訊的話,建議用Post資料提交方式.但是執行效率卻比Post方法好.
在做資料查詢時,建議用Get方式;而在做資料添加、修改或刪除時,建議用Post方式。
2>拿登陸介面來做例子:
a.get方式
<form method="get" action="WebForm2.aspx"> <table border="0" style="width:100%;"> <tr> <td> </td> <td> <input id="Text1" name="txtUserName" type="text" /></td> <td> </td> </tr> <tr> <td class="auto-style1"></td> <td class="auto-style1"> <input id="Text2" name="txtUserPwd" type="text" /></td> <td class="auto-style1"></td> </tr> <tr> <td> </td> <td> <input id="Submit1" type="submit" value="登入" /></td> <td> </td> </tr> </table> </form>
接收用get方法傳輸的資料寫法:
protected void Page_Load(object sender, EventArgs e) { string userName =Request.QueryString["txtUserName"].ToString(); string userPwd =Request.QueryString["txtUserPwd"].ToString(); if (userName =="a"&&userPwd =="a") { Response .Redirect ("WebForm1.aspx?userName="+userName+"&userPwd="+userPwd); } else { Response.Redirect("login.html"); } }
b.post方式
<form method="post" action="WebForm2.aspx"> <table border="0" style="width:100%;"> <tr> <td> </td> <td> <input id="Text1" name="txtUserName" type="text" /></td> <td> </td> </tr> <tr> <td class="auto-style1"></td> <td class="auto-style1"> <input id="Text2" name="txtUserPwd" type="text" /></td> <td class="auto-style1"></td> </tr> <tr> <td> </td> <td> <input id="Submit1" type="submit" value="登入" /></td> <td> </td> </tr> </table> </form>
接收用Post方法傳輸的資料寫法:
protected void Page_Load(object sender, EventArgs e) { string userName = Request.Form.Get("txtUserName").ToString(); string userPwd = Request.Form.Get("txtUserPwd").ToString(); if (userName =="a"&&userPwd =="a") { Response .Redirect ("WebForm1.aspx?userName="+userName+"&userPwd="+userPwd); } else { Response.Redirect("login.html"); } }
(2)Response常用方法:
write:用於向當前HTTP響應流寫入文本,使其成為返回頁面的一部分;
Redirect:將使用者從請求頁面重新定向或帶到另一頁面。
3、html,htm,xml區別
htm也就是html.都是靜態網頁檔案的副檔名。htm是DOS三字元副檔名時代而來;html是windows時代支援多字元副檔名。
Xml是用來儲存資料的,重在資料本身。而HTML是用來定義資料的,重在資料的顯示模式。XML是結構化的資訊中包含了一些內容(例如文字,圖片等)和一些指示出內容的重現手段的標記(例如,在一個章節頭部的資訊和其腳註處的資訊是有不同含義的。)所有的文檔都有不同的結構。一種標記語言,是定義文檔結構的機制。XML規範定義了一個對文檔進行標記的標準。
總結:ASP.NET這隻是一個開端,還有更多的知識等待我們去學習,更多的寶藏等待我們去挖掘。