ASP.NET 2.0 Web表單文法指導

來源:互聯網
上載者:User
asp.net|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不同——在ASP中函數必須在<% %>塊中定義——所有的函數和全域變數必須使用<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個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.