ASP 2.0 Web窗體語法

ASP.NET Web窗體頁面是一個宣告式的文本文件,擴展名是.aspx。除了靜態的內容之外,你還可以使用八種不同的語法標記元素。這一部分回顧這些語法元素並提供了一些使用方法示例。

呈現代碼的語法:<% %>和<%= %>

代碼呈現塊用<% ... %>元素表示,它允許你控制呈現的內容,在Web窗體頁面執行的顯示階段執行。下面的例子演示瞭如何使用它們循環顯示HTML的內容。

 

<%@ Page Language=VB %> 
<html>
<body>
<% Dim I As Integer
For I = 0 To 7 %>
<font size=<%=I%>> Hello World! </font> <br>
<% Next %>
</body>
</html> 

 

<% ... %>包含的代碼只是執行,而包含等號(<%= ... %>)的表達式會在顯示內容的時候計算結果。因此,<%=Hello World %>與C#代碼<% Response.Write(Hello World); %>顯示的結果相同。
請注意,由於語言需要使用標記來終止或分離語句(例如C#中的分號;),正確地放置這些標記就很重要了。

C# 代碼

<% Response.Write(Hello World); %> 需要用分號來終止語句。

<%=Hello World; %> 錯誤:導致Response.Write(Hello World;);。

<%=Hello World %> 不需要分號。

聲明代碼的語法:<script runat=server>

代碼聲明塊定義了會被編譯到Page類中的成員變量和方法。這些塊可用於建立頁面和導航邏輯。下面的例子演示瞭如何在<script runat=server>塊中定義Subtract方法,接着在頁面中調用它。

 

<html>
<script language=VB runat=server>
Function Subtract(Num1 As Integer, Num2 As Integer) As Integer
Return Num1-Num2
End Function
</script>

<body>
<% 
Dim Number As Integer = 100
Do While Number > 0
Response.Write(Value: & Number & <br>)
Number = Subtract(Number, 1)
Loop
%>
</body>
</html> 

 

請注意:與ASP不同?D?D在ASP中函數必須在<% %>塊中定義?D?D所有的函數和全局變量必須使用<script runat=server>標記定義。<% %>塊中的函數聲明會提示語法編譯錯誤信息。

服務器控件語法

定製的ASP.NET服務器控件允許頁面開發者動態地生成HTML用戶界面並響應客戶端請求。它們是在文件中用宣告式的、基於標記的語法表示的。這些標記不同於其它的一些標記,它們包含一個runat=server屬性。下面的例子演示瞭如何在ASP.NET頁面中使用<asp:label runat=server>服務器控件。這個控件與System.Web.UI.WebControls名字空間中的Label類對應。

通過添加一個ID爲“Message”的標記,可以在運行時建立一個Label實例:

<asp:label id=Message font-size=24 runat=server/>

我們可以使用這個名字來訪問該控件。下面的代碼設置了該控件的Text屬性。

Message.Text = Welcome to ASP.NET

<html>
<script language
=VB runat=server>
Sub Page_Load(Sender As Object, E As EventArgs)
Message.Text 
= Welcome to ASP.NET
End Sub
/script>
<body>
<asp:label id
=Message font-size=24 runat=server/
/body>
/html> 

 

HTML服務器控件語法

HTML服務器控件允許開發者編程操作頁面中的HTML元素。HTML服務器控件標籤與客戶端HTML元素是有區別的,它帶有runat=server屬性。下面的例子演示瞭如何在ASP.NET頁面中使用HTML<span runat=server>服務器控件。

 

<html>
<script language=VB runat=server>
Sub Page_Load(Sender As Object, E As EventArgs)
Message.InnerHtml = Welcome to ASP.NET
End Sub
</script>
<body>
<span id=Message style=font-size:24 runat=server/>
</body>
</html> 

 

數據綁定語法:<%# %>

ASP.NET內建的支持數據綁定的能力允許頁面開發者分層次地把控件屬性綁定到數據容器值。<%# %>代碼塊中的代碼只在自己的父控件容器的DataBind方法被調用的時候才執行。下面的例子演示瞭如何在<asp:datalist runat=server>控件中使用數據綁定語法。

在這個數據列表中,每個項都指定了模板。項模板的內容是使用數據綁定表達式指定的,Container.DataItem指向MyList數據列表使用的數據源。

<asp:datalist id=MyList runat=server>
<ItemTemplate>
Here is a value: <%# Container.DataItem %>
</ItemTemplate>
</asp:datalist>

在這種情況下,MyList控件的數據源是編程設定的,接着調用了DataBind()方法。

調用某個控件的DataBind方法將引發一個遞規樹(從該控件開始的到樹中的下層控件);該層次中的每個服務器控件的DataBinding事件都會被引發,控件中的數據綁定表達式相應地計算出值。因此,如果頁面的DataBind方法被調用,那麼頁面中的每個數據綁定表達式都會被調用。

 

<html>
<script language=VB runat=server>
Sub Page_Load(Sender As Object, E As EventArgs)
Dim Items As New ArrayList
Items.Add(One)
Items.Add(Two)
Items.Add(Three)
MyList.DataSource = Items
MyList.DataBind()
End Sub

</script>
<body>
<asp:datalist id=MyList runat=server>
<ItemTemplate>
Here is a value: <%# Container.DataItem %>
</ItemTemplate>
</asp:datalist>
</body>
</html> 

 

ASP.NET 2.0還包含了一種新的簡化的數據綁定語法,它允許控件自動地數據綁定到數據源控件,而無需在頁面代碼中調用DataBind()。在“執行數據訪問”章節中會討論這種語法。

對象標記語法:<object runat=server />

對象標記允許頁面開發者使用宣告式的、基於標記的語法來聲明和建立變量實例。下面的例子演示瞭如何使用對象標記來建立ArrayList類的實例。

在運行的時候該對象會被自動地建立,並可以通過ID“items”訪問它。

<html>
<script language=VB runat=server>
Sub Page_Load(ByVal Sender As Object, ByVal E As EventArgs)
ArrayItems.Add(One)
ArrayItems.Add(Two)
ArrayItems.Add(Three)
MyList.DataSource = ArrayItems
MyList.DataBind()
End Sub
</script>

<body>
<object id=ArrayItems class=System.Collections.ArrayList runat=server/>
<asp:datalist id=MyList runat=server>
<ItemTemplate>
Here is a value: <%# Container.DataItem %>
</ItemTemplate>
</asp:datalist>
</body>
</html>

服務器端註釋語法:<%-- Comment --%>

服務器端註釋讓頁面開發者能夠阻止服務器代碼(包括服務器控件)和靜態內容的執行和呈現。下面的例子演示瞭如何阻止內容的執行和發送給客戶端。請注意,<%--和--%>之間的所有信息都會被過濾掉,並且只有在原始的服務器文件中纔可以看見,即使它包含了其它的ASP.NET指令。

<html>
<body>
The below content has been hidden from browser clients using a server-side comment
(view the .aspx source to see what we mean :-)
<%--
<asp:calendar id=MyCal runat=server/>
<% For I = 0 To 44 %>
Hello World <br>
<% Next %>
--%>
</body>
</html>

服務器端文件包含語法:<-- #Include File=Locaton.inc -->

服務器端文件包含(#Include)允許開發者在ASP.NET頁面的任何位置插入特定文件的內容。下面的例子演示瞭如何在一個頁面中插入自定義的標題和腳註。

<html>
<body>
<!-- #Include File=Header.inc -->
<br />
<h3> Main page content </h3>
<br />
<!-- #Include File=Footer.inc -->
</body>
</html>

表達式語法:<%$ ... %>2.0中的新特性

ASP.NET 2.0增加了一個新的用於在頁面分析之前進行值替代的宣告式表達式語法。當我們需要用Web.config文件中的連接字符串值或應用程序設置替換服務器控件屬性值的時候,它就非常有用。在本地化(locaization)的時候,它還可以用於替換資源文件中的值。

<asp:SqlDataSource ID=SqlDataSource1 ConnectionString=<%$ connectionStrings:Pubs %> runat=server SelectCommand=sp_GetAuthors />
<asp:Label ID=Label1 Text=<%$ Resources: ExchRate, ConvertLabel %> runat=server/>  

發佈了5 篇原創文章 · 獲贊 0 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章