這幾天我們開始學習了ASP.NET技術。可以說以前學的大部分知識都是為了ASP.NET技術打基礎的。只要前面的學紮實了這個還是很好理解的。
ASP.NET是基於.net平台的Active Server Page技術,要知道的是ASP!=ASP.NET。從以下幾點來更深入的理解ASP.NET:
1,Code-Behind技術:代碼和頁面相分離的記錄;
2,純物件導向的技術:提供了大量的控制項和組件;
3,傳統的指令碼開發,ASP.Net是一門動態伺服器頁面技術,需要在伺服器端進行編譯,然後把編譯後的結果發送到用戶端。
格式:<% 程式碼片段 %> 一個頁面可以有n個程式碼片段。而且,程式碼片段放置的位置可以是任意的。 無論一個頁面有多少個程式碼片段,總體上來說還是一個程式碼片段。在代碼塊中不能夠定義方法,程式碼片段也遵循變數先定義後使用的原則。
格式:<%Response.Write(object);%> 或者 <%=object%>
- Get請求 如一個頁面為:http://www.baidu.gom/login.php?name=ssss&pwd=yyyy 他的意思是:請求的頁面是login.php頁面,給login.php頁面傳遞兩個參數name==ssss 和 pwd==yyyy
值得注意的是:通常,在超連結和地址欄中的連結都是Get請求,在接受頁面不能夠直接存取,可能會出現null 指標異常。一般情況下超連結都是get請求。但是get請求有自身限制 :
1,以明文的形式進行傳遞。
2,參數的長度有限制,最大不能超過255
一般情況下,Post請求用於表單的提交 :
1,以暗文的形式進行傳遞。
2,參數的長度沒有限制
- Request :在接受get請求是需用 Request.QueryString[key]
下面列舉幾個ASP.NET常用的對象 :
1,Response===HttpResponse是用來向用戶端瀏覽器輸出內容。
常用的方法: Write(string):向瀏覽器輸出內容(文本,html,css,javascript)
End():結束對當前輸出資料流。
2,Request===HttpRequest 是用來從用戶端瀏覽器拿到內容
常用的屬性: QueryString:擷取get請求中的參數值
---NameValueCollection Item[index]:根據索引得到值 Item[key]:根據鍵得到值
Form:擷取post請求中的參數
---NameValueCollection Item[index]:根據索引得到值 Item[key]:根據鍵得到值
3,Server === HttpServerUtility 這個對象代表了伺服器端,可以得到伺服器端的一些資訊。
常用方法: UrlDecode(string):用來解碼 。這個方法只能用來解釋unicode編碼(%20等等)
回傳技術是一個很重要的技術,以後的學習當中我們經常會遇到他。回傳是自己把資料發送給自己,讓後自己處理資料,因此回傳滿足的兩個條件是:
1,請求類型必須是post類型
2,post資料的時候,action指向的頁面是自己
下面是一個簡單的運用ASP.NET技術串連資料庫的post請求登入程式碼片段,其中兩個aspx頁面第一個是登入的首頁面,第二個頁面是兩節資料庫的頁面:
<%@ Page Language="C#" ContentType="text/html" ResponseEncoding="utf-8" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>無標題文檔</title></head><body> <form action="Data.aspx" method="post"> 姓名:<input type="text" name="name"/> <br/> 建立密碼:<input type="password" name="pwd1"/> <br/> 重新輸入密碼:<input type="password" name="pwd2"/> <br/> <input type="submit" value="註冊成功"/> </form></body></html>
<%@ Page Language="C#" ContentType="text/html" ResponseEncoding="utf-8" %><%@ Import NameSpace="System.Data"%><%@ Import NameSpace="System.Data.SqlClient"%><% string name=Request.Form["name"]; string pwd1=Request.Form["pwd1"]; string pwd2=Request.Form["pwd2"]; if(pwd1!=pwd2) { Response.Write("兩次密碼不相同請重新註冊"); %> <a href="01.aspx">返回</a>,重新輸入註冊! <% return; } string strcon="server=.;database=my;uid=sa;pwd=1"; SqlConnection con = new SqlConnection(strcon); SqlCommand cmd =new SqlCommand(); using(con) { con.Open(); using(cmd) { cmd.Connection = con; cmd.CommandText = "insert into register values (@name,@pwd)"; cmd.Parameters.Add("@name",SqlDbType.VarChar,10); cmd.Parameters["@name"].Value = name; cmd.Parameters.Add("@pwd",SqlDbType.VarChar,20); cmd.Parameters["@pwd"].Value = pwd1; cmd.ExecuteNonQuery(); } } %>
<%@ Page Language="C#" ContentType="text/html" ResponseEncoding="utf-8" %><%@ Import NameSpace="System.Data"%><%@ Import NameSpace="System.Data.SqlClient"%><% string name=Request.Form["name"]; string pwd1=Request.Form["pwd1"]; string pwd2=Request.Form["pwd2"]; if(pwd1!=pwd2) { Response.Write("兩次密碼不相同請重新註冊"); %> <a href="01.aspx">返回</a>,重新輸入註冊! <% return; } string strcon="server=.;database=my;uid=sa;pwd=1"; SqlConnection con = new SqlConnection(strcon); SqlCommand cmd =new SqlCommand(); using(con) { con.Open(); using(cmd) { cmd.Connection = con; cmd.CommandText = "insert into register values (@name,@pwd)"; cmd.Parameters.Add("@name",SqlDbType.VarChar,10); cmd.Parameters["@name"].Value = name; cmd.Parameters.Add("@pwd",SqlDbType.VarChar,20); cmd.Parameters["@pwd"].Value = pwd1; cmd.ExecuteNonQuery(); } } %>