在 .NET Framework 中 ASP.NET 內嵌表達式
本文包含下列內嵌表示式 ASP.NET 簡介:
- <% ... %>
- <%= ... %>
- <%@ ... %>
- <%# ... %>
- <%$ ... %>
- <%-- ... --%>
原始產品版本:.NET Framework
原始 KB 編號: 976112
<% ... %> 內嵌程式代碼區塊
內嵌程式代碼區塊可用來保留與傳統 ASP 的回溯相容性。 區塊中的程式代碼可以執行程序設計語句,並在頁面轉譯階段期間呼叫目前頁面類別中的函式。
下列範例示範在內嵌程式代碼區塊中具有範例 Microsoft Visual Basic .NET 程式代碼的 ASP.NET 頁,以顯示迴圈的結果:
<%@ Page Language="VB" %>
<html>
<body>
<form id="form1" runat="server">
<% For i As Integer = 16 To 24 Step 2%>
<div style="font-size: <% Response.Write(i)%>">
Hello World<br />
</div>
<% Next%>
</form>
</body>
</html>
因為內嵌程式代碼區塊一律與超文本標記語言 (HTML) 來源混合,所以開發人員很難讀取和維護它們。
如需 ASP.NET 網頁中內嵌程式代碼區塊的詳細資訊,請造訪 ASP.NET Web Forms Pages 中的內嵌程式代碼區塊。
<%= ... %> 顯示表示式
顯示 <%= ... %>
表達式相當於只包含語句的 Response.Write(...)
內嵌程式代碼區塊。 這是顯示單一字串、int 變數或常數等資訊的最簡單方式。
例如,下列範例程式代碼會顯示目前的時間:
<%@ Page Language="VB" %>
<html>
<body>
<form id="form1" runat="server">
<%=DateTime.Now.ToString() %>
</form>
</body>
</html>
請記住,顯示表示式無法用於伺服器控制元件的屬性中。 這是因為 .NET Framework 直接編譯整個表達式,而不是將內容顯示為 屬性的值。
如需如何顯示 ASP.NET 信息的詳細資訊,請造訪 從 ASP.NET 顯示。
<%@ ... %> 指示詞表示式
指示詞表達式是一種語法,可指定頁面和使用者控件編譯程式在 ASP.NET 處理 Web Form (.aspx) 頁面和使用者控件 (.ascx) 檔案時所使用的設定。
ASP.NET 頁面架構支援下列指示詞:
指導 | 描述 |
---|---|
@ Page |
定義頁面剖析器和編譯程式所使用的頁面特定屬性 ASP.NET。 只能包含在.aspx檔案中。 此指示詞名稱只能用於 ASP.NET 網頁。 |
@ Control |
定義 ASP.NET 頁面剖析器和編譯程式所使用的控件特定屬性。 只能包含在 .ascx 檔案中, (使用者控件) 。 指示詞名稱只能在使用者控制檔案中使用。 |
@ Import |
明確地將命名空間匯入頁面或使用者控制項。 |
@ Implements |
以宣告方式表示頁面或使用者控件實作指定的 .NET Framework 介面。 |
@ Register |
將別名與命名空間和類別名稱建立關聯。 這可讓使用者控制項和自訂伺服器控制項在包含在要求的頁面或使用者控件時呈現。 |
@ Assembly |
在編譯期間將元件連結至目前頁面。 它可讓所有元件的類別和介面在頁面上使用。 |
@ Master |
識別 ASP.NET 主版頁面。 |
@ WebHandler |
識別 ASP.NET IHttpHandler 頁面。 |
@ PreviousPageType |
提供一種方式來取得透過 PreviousPage 屬性存取的上一頁強式輸入。 |
@ MasterType |
將類別名稱指派給 ASP.NET 頁面的 Master 屬性。 提供一種方式來建立 ASP.NET 主版頁面的強型別參考。 |
@ OutputCache |
以宣告方式控制頁面或使用者控件的輸出快取原則。 |
@ Reference |
以宣告方式將頁面或使用者控件連結至目前的頁面或使用者控件。 |
如需指示詞語法的詳細資訊,請瀏覽 文字範本指示詞語法。
<%# ... %> 資料系結運算式
當此伺服器控制元件的 DataBind 方法在頁面上呼叫時,數據系結表達式會在伺服器控制項屬性和數據源之間建立系結。
下列範例示範如何使用數據系結表達式,將字串從函式系結至卷標的 Text 屬性:
<%@ Page Language="VB" %>
<script runat="server">
Protected Function SayHello() As String
Return "Hello World"
End Function
Protected Sub Page_PreRender(ByVal sender As Object, ByVal e As System.EventArgs)
lblHello.DataBind()
End Sub
</script>
<html>
<body>
<form id="form1" runat="server">
<asp:Label ID="lblHello" runat="server" Text="<%# SayHello%>"></asp:Label>
</form>
</body>
</html>
如需數據系結表達式語法的詳細資訊,請瀏覽 數據系結表達式語法。
<%$ ... %> 表示式產生器
表達式產生器可用來根據應用程式組態或資源檔中包含的信息來設定控件屬性的值。 下列範例是表達式產生器的基本語法:
<%$ Expression Prefix: Expression Value %>
$) (貨幣符號表示 ASP.NET 下列表達式是表達式產生器。 表示式前置詞會定義表達式的種類,例如 AppSettings
、 ConnectionStrings
或 Resources
。 此外,您可以建立和定義自己的運算式產生器。 冒號 (:) 後面的表達式值是 ASP.NET 實際用來做為特定屬性值的專案。
下列示範示範如何使用運算式產生器,從 AppSettings
Web.config 檔案中的節點取得網站的著作權,以及如何將著作權資訊設定為常值的 Text 屬性值。
AppSettings
Web.config檔案中的節點:
<appSettings>
<add key="copyright" value="(c) Copyright 2009 WebSiteName.com"/>
</appSettings>
ASP.NET Web Form 頁面中的運算式產生器:
<div id="footer">
<asp:Literal ID="Literal1" runat="server" Text="<%$ AppSettings: copyright %>"></asp:Literal>
</div>
如需 ASP.NET 表達式的詳細資訊,請流覽 ASP.NET 表示式概觀。
<%-- ... -- %> 伺服器端批注區塊
伺服器端批注區塊可讓開發人員將程式代碼批注內嵌在 ASP.NET Web Form 網頁之 HTML 來源的任何位置 (,但程式代碼區塊) 內 <script>
除外。 伺服器端批註區塊的開頭和結尾標記之間的任何內容都不會在伺服器上處理,也不會在產生的頁面上轉譯。
下列程式代碼範例示範如何在 ASP.NET 頁面中使用伺服器端批注區塊:
<%@ Page Language="VB" %>
<script runat="server">
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
Dim strName As String
strName = Session("userName")
lblUserName.Text = strName
End Sub
</script>
<html>
<body>
<form id="form1" runat="server">
<%-- Label for UserName --%>
<asp:Label ID="lblUserName" runat="server" Text=""></asp:Label>
</form>
</body>
</html>
如需伺服器端批注的詳細資訊,請造訪 伺服器端批注。
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應