其實<%%>很早之前就見過了,只是會用一點功能,其它的不甚了解。今天偶爾見到了它的廬山真面目,現在共享給大家。
語法
代碼塊呈現(<%%>)定義了當呈現頁時執行的內聯代碼或內聯表達式,它的具體語法如下:
<%code%>//內聯代碼
<%=expression%>//內聯表達式
使用內聯代碼可以定義獨立的行或代碼塊。它是呈現頁面的過程中執行的服務器代碼。關於嵌入式代碼塊的使用說明,如下:ASP.NET網頁中支持嵌入式代碼塊,主要用於保留與舊的ASP技術的向后兼容性。一般情況下,將嵌入式代碼塊用於復雜的編程邏輯並不是最佳做法,因為當頁中的代碼與標記混合時,很難進行調試和維護。此外,由於代碼將在呈現頁的過程中執行,因此與將代碼至於適當的頁處理階段以執行后台代碼或腳本塊代碼相比,靈活性大大降低。
嵌入式代碼塊的部分用途包括:
將控件元素或標記元素的值設置為函數返回的值。
將計算直接嵌入到標記或控件屬性中。
示例
示例1:在頁面上輸出5行標記為“信息技術提高班”的字符串,運行效果如圖:
代碼如下:
- <span style="font-family:KaiTi_GB2312;font-size:18px;"><%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="TestLocalData.WebForm1" %>
- <!DOCTYPE html>
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head runat="server">
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
- <title>測試內聯代碼</title>
- </head>
- <body>
- <form id="form1" runat="server">
- <div>
- <!--打印5行字符串-->
- <%for (int i = 1; i <=5; i++) %>
- <%{ %>
- <%Response.Write("信息技術提高班"); %><br />
- <%} %>
- </div>
- </form>
- </body>
- </html>
- </span>
示例2:內聯表達式是調用Write方法的快捷方式。<%=expression%>用於解析表達式,並將其值返回到塊中。以下示例代碼通過使用內聯表達式顯示GetTime方法的值,運行效果如圖所示:
代碼如下:
- <span style="font-family:KaiTi_GB2312;font-size:18px;"><%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm2.aspx.cs" Inherits="TestLocalData.WebForm2" %>
- <!DOCTYPE html>
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head runat="server">
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
- <title>測試內聯表達式</title>
- <script runat="server">
- protected String GetTime() {
- return DateTime.Now.ToString("t"); //獲取當前時間hh:mm
- }
- </script>
- </head>
- <body>
- <form id="form1" runat="server">
- <div>
- 當前時間是:<%=GetTime() %>
- </div>
- </form>
- </body>
- </html></span>
注意:代碼塊中的代碼必須使用該頁的默認語言進行編寫。例如,如果該頁的@Page指令包含屬性language=”C#”,則該頁將使用Visual C#編譯器對標有runat=server的所有腳本塊中的代碼,以及<%%>代碼塊中的所有內嵌代碼進行編譯。
示例3:應用<%%>代碼塊來實現ASP.NET中簡單的屬性綁定。
首先了解什么是數據綁定。數據綁定不僅可以直接輸出一般輸出語句可以輸出的數據類型,還可以輸出任何一種符合數據綁定要求的數據源,而且對於不同的數據顯示控件對數據源的處理可以不一致,也可以根據情況的改變而動態地發生變化。也就是說,在數據綁定中,數據的顯示是由數據源和數據顯示控件共同決定的。數據源決定數據的內容,數據顯示控件決定數據的顯示方式。實際上,數據綁定的作用機制就是由數據顯示控件調用數據源的方法得到數據的。
數據綁定的語法如下:
<語言標記…屬性’<% 數據綁定表達式 %>’runat=”server”>
如果將表達式的結果直接輸出到網頁上,那么數據綁定的語法如下:
字符串:<% 數據綁定表達式 %>
示例運行結果如圖:
下面介紹程序實現的主要步驟(正常情況下應該從數據庫中獲取,這里為了演示方便就綁定死的數據了):
(1)新建一個aspx頁面,在前台頁面代碼中定義兩個公共屬性,這兩個屬性作為綁定數據時的數據源;之后應用<%%>代碼塊將它與顯示控件之間建立綁定關系,完整示例代碼如下:
- <span style="font-family:KaiTi_GB2312;font-size:18px;"><%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm3.aspx.cs" Inherits="TestLocalData.WebForm3" %>
- <!DOCTYPE html>
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head runat="server">
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
- <title>數據綁定表達式測試</title>
- <script runat="server">
- public String Name {
- get { return "lc"; }
- }
- public String Sex {
- get { return "male"; }
- }
- </script>
- </head>
- <body>
- <form id="form1" runat="server">
- <div>
- 簡單屬性綁定<br />
- 姓名:<%#Name %><br />
- 性別:<%#Sex %>
- </div>
- </form>
- </body>
- </html>
- </span>
說明:基於屬性的數據綁定所涉及的屬性必須包含get訪問器,因為在數據綁定過程中,數據顯示控件需要屬性的get訪問器中從屬性中讀取數據
(2)綁定完成之后,只需要在頁面的Page_Load事件中調用Page類的DataBind方法,來實現在頁面加載時讀取數據,代碼如下:
- <span style="font-family:KaiTi_GB2312;font-size:18px;">protected void Page_Load(object sender, EventArgs e)
- {
- Page.DataBind();
- }
- </span>
我們在見到一個陌生的知識或者名詞之后不應該只是停留在會用的層次上,而應向“知其然知其所以然”靠攏,了解來龍去脈,哪怕掌握不了,最起碼也要知道。對於經常使用的知識點擴展查完之后還需要進行消化、實踐,這樣才能拓展自己的眼界,並在面對該知識的變種之后能夠從容的面對