首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> 關於ASP.NET

ASP.NET 2.0 Web Form 語法完整指南:八大標記元素與程式碼渲染模型

     編輯:關於ASP.NET

ASP.NET Web Form 頁面結構

.aspx 頁面是宣告式文字檔,包含靜態內容(HTML)與伺服器端程式碼標記。執行時由 ASP.NET 執行階段剖析、編譯為 Page 衍生類別,動態產生輸出。

八大語法標記元素

標記名稱用途範例
<%@ ... %>指令頁面層級設定:語言、繼承、匯入、輸出快取、事件驗證等<%@ Page Language="C#" MasterPageFile="~/Site.Master" %>
<% ... %>程式碼呈現區塊執行陳述式、控制流程、輸出 HTML 片段<% for (int i=0; i<3; i++) { %> <p>項目 <%=i%></p> <% } %>
<%= ... %>運算式呈現區塊計算運算式並輸出結果(等同 Response.Write)<%=DateTime.Now.ToString("yyyy/MM/dd")%>
<%# ... %>資料繫結運算式單向/雙向資料繫結,於 DataBind() 時評估<asp:Label Text='<# Eval("Name") %>' runat="server" />
<%$ ... %>運算式建構器從組態、資源、連線字串取值<%$ ConnectionStrings:Northwind %>
<%-- ... --%>伺服器端註解不會輸出至瀏覽器,僅原始碼可見<%-- 這行不會輸出 --%>
<script runat="server">程式碼宣告區塊定義成員變數、方法、事件處理常式,編譯進 Page 類別見下方範例
<asp:Control ... />伺服器控制項標記宣告式建立控制項樹,runat="server" 必備<asp:Button ID="btn" Text="送出" OnClick="btn_Click" runat="server" />

程式碼呈現區塊 vs 運算式呈現區塊

<%@ Page Language="C#" %>
<html><body>
<% 
    // 程式碼呈現:可包含多行陳述式、控制結構
    string[] names = { "Alice", "Bob", "Charlie" };
    foreach (string n in names) 
    { 
%>
    <div>Hello, <%= n %>!</div>  <%-- 運算式呈現:輸出變數值 --%>
<% 
    } 
%>
</body></html>

注意:C# 陳述式需分號結尾;<%= ... %> 內不加分號,否則會產生 Response.Write(...;); 語法錯誤。

程式碼宣告區塊

<script runat="server">
    // 成員變數
    private int _counter = 0;

    // 事件處理常式
    protected void btn_Click(object sender, EventArgs e)
    {
        _counter++;
        lblCount.Text = "點擊次數:" + _counter;
    }

    // 輔助方法
    protected string FormatName(string first, string last)
    {
        return last + " " + first;
    }
</script>

<html><body>
    <form runat="server">
        <asp:Label ID="lblCount" runat="server" Text="0" />
        <asp:Button ID="btn" Text="點我" OnClick="btn_Click" runat="server" />
    </form>
</body></html>

關鍵差異:ASP 時代函數寫在 <% %>;ASP.NET 所有成員必須在 <script runat="server"> 定義,否則編譯錯誤。

指令詳細說明

指令常用屬性說明
@ PageLanguage, MasterPageFile, CodeFile, Inherits, EnableViewState, ValidateRequest, AsyncTimeout頁面層級設定,每頁僅一個
@ ImportNamespace匯入命名空間,等同 C# using
@ RegisterTagPrefix, Namespace, Assembly, Src, TagName註冊使用者控制項、自訂控制項
@ OutputCacheDuration, VaryByParam, Location, SqlDependency頁面/片段輸出快取
@ ReferenceVirtualPath強制編譯參考頁面/控制項
@ PreviousPageTypeVirtualPath, TagName跨頁面回傳強型別存取前一頁

內聯程式碼 vs 後置程式碼

模式檔案結構優點缺點
內聯單一 .aspx 含 <script runat="server">單一檔案、快速原型、部署簡單程式碼與標記混雜、難以團隊協作、無編譯時型別檢查(舊版)
後置程式碼.aspx + .aspx.cs (partial class)關注點分離、設計師/開發者並行、完整編譯檢查、版控友善兩個檔案、需同步類別名稱

ASP.NET 2.0 採用 partial class 機制,.aspx.cs 只需定義事件處理常式,控制項變數自動由 .aspx 設計器產生於 .aspx.designer.cs,極大簡化維護。

最佳實務建議

  • 優先採用後置程式碼(CodeBehind),符合企業級開發標準。
  • 盡量減少 <% %> 區塊,改用資料繫結運算式 <%# %> 或控制項屬性繫結。
  • 使用 <%$ %> 存取組態/資源,避免硬編碼。
  • 啟用 ValidateRequest="true"(預設)防止 XSS,必要時在控制項層級關閉 ValidateRequestMode="Disabled"。
  • 善用 @ OutputCache 提升效能,動態區塊用 <asp:Substitution>。

結語

掌握 ASP.NET Web Form 八大語法標記、程式碼渲染模型、內聯與後置程式碼差異,是開發高品質 ASP.NET 應用的基礎。正確選擇語法元素、遵循最佳實務,能讓頁面結構清晰、易維護、效能優異。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved