經典 ASP.NET WebForms 頁面(.aspx)支援內嵌伺服器端程式碼區塊(<% ... %>),C# 與 VB.NET 在控制流程語法上有明顯差異。
<%@ Page Language="C#" %>
<html>
<body>
<form method="post">
<h3>Name: <input id="Name" type="text" /></h3>
<select id="Category">
<option>psychology</option>
<option>business</option>
<option>popular_comp</option>
</select>
<input type="submit" value="Lookup" />
<% for (int i = 0; i < 8; i++) { %>
<font size="<%=i%>"> Welcome to ASP.NET </font><br />
<% } %>
</form>
</body>
</html>
<%@ Page Language="VB" %>
<html>
<body>
<form method="post">
<h3>Name: <input id="Name" type="text" /></h3>
<select id="Category">
<option>psychology</option>
<option>business</option>
<option>popular_comp</option>
</select>
<input type="submit" value="Lookup" />
<% Dim I As Integer
For I = 0 To 7 %>
<font size="<%=I%>"> Welcome to ASP.NET </font><br />
<% Next %>
</form>
</body>
</html>
| 結構 | C# | VB.NET |
|---|---|---|
| 頁面指示詞 | Language="C#" | Language="VB" |
| 區域變數宣告 | 在 for 迴圈初始化部份 int i = 0 | 獨立 Dim I As Integer 陳述式 |
| For 迴圈 | for (int i=0; i<8; i++) { ... } | For I = 0 To 7 ... Next |
| 區塊分隔 | 大括號 { } | 關鍵字 For ... Next, If ... End If |
| 輸出運算式 | <%=i%> | <%=I%>(相同) |
for 宣告中初始化,作用域限於迴圈內。Dim, To, Next),可讀性強。| 標記 | 用途 | 範例 |
|---|---|---|
<% ... %> | 執行陳述式(控制流程、變數宣告) | <% for(...) { %> |
<%= ... %> | 輸出運算式結果(相當於 Response.Write) | <%=i%> |
<%: ... %> | 輸出並 HTML 編碼(ASP.NET 4+) | <%: userInput %> |
<%# ... %> | 資料繫結運算式(Eval, Bind) | <%# Eval("Name") %> |
<%@ ... %> | 頁面/控制項指示詞 | <%@ Page Language="C#" %> |
雖然了解語法差異有助於維護舊專案,但現代 ASP.NET 開發(MVC, Razor Pages, Blazor)強烈建議:
@for (int i=0; i<8; i++) { <div>@i</div> },編譯期檢查、IntelliSense 完整支援。C# 與 VB.NET 在 ASP.NET 內嵌區塊中的差異,本質上反映了兩種語言的核心語法哲學。新專案請擁抱 Razor 與現代架構;維護舊專案時,熟悉這些差異能讓你快速切換語言語境,避免語法錯誤。