BLOG
網站專欄 Q & A
網站技術

ASP.NET 是什麼?語法介紹、ASP.NET Core 現況與 Web Forms 差別

ASP.NET 是微軟在 .NET 平台上的網頁開發框架,2002 年推出,主要語言是 C#。它經歷過一次大改版:2016 年起的 ASP.NET Core 跨平台、開放原始碼、可以跑在 Linux,而舊的 ASP.NET(.NET Framework)則只在 Windows 上維護。今天說「ASP.NET」,九成情況指的是 ASP.NET Core。這篇文章整理兩條產品線的差別、Web Forms 與 Razor Pages 的語法範例、表單與資料庫存取,以及版本支援現況,幫您判斷它適不適合您的專案。本文屬於《網頁程式語言》系列,總覽請見〈網頁程式設計入門〉。

ASP.NET 示意圖:以 C# 為主要語言的微軟 .NET 網頁開發框架

一、ASP.NET 是什麼?

ASP.NET 是微軟開發的開放原始碼網頁框架,用 C#(或 F#、VB.NET)撰寫伺服器端程式,產生網頁、API 與即時服務。它是 .NET 平台的一部分,程式需要先編譯,執行效能與型別安全都優於直譯式腳本。名字裡的 ASP 來自它取代的前身 Classic ASP,但兩者的程式碼互不相容,只是品牌延續。

ASP.NET 提供幾種不同的寫法(微軟稱為應用程式模型):早期的 Web Forms 用「控制項拖拉+事件」模擬桌面程式;2009 年起的 MVC 把程式分成 Model、View、Controller;ASP.NET Core 時代的主流則是 Razor Pages(以頁面為單位)、MVC、Web API(純後端 API)與 Blazor(用 C# 寫前端互動)。名稱很多,但核心都是同一套 .NET 執行環境與 C# 語言。

二、兩條產品線:ASP.NET 與 ASP.NET Core

2016 年是分水嶺:之前的 ASP.NET 建立在只能跑 Windows 的 .NET Framework 上;之後的 ASP.NET Core 重寫核心,跨平台且開放原始碼。微軟已明確表示 .NET Framework 4.8 是最後一個主要版本,只隨 Windows 提供安全性更新,所有新功能都在 ASP.NET Core。

  • ASP.NET(.NET Framework 4.x):Web Forms(.aspx)、MVC 5、Web API 2。只能部署在 Windows 與 IIS。既有企業系統大量使用,微軟持續提供安全性修補,但 Web Forms 不會被移植到 Core。
  • ASP.NET Core(.NET 8、9、10):Razor Pages、MVC、Minimal API、Blazor、SignalR。可部署在 Windows、Linux、macOS、容器與各家雲端,內建 Kestrel 網頁伺服器,效能是微軟公開強調的重點。
命名提醒:.NET 5 之後微軟把「.NET Core」簡稱為「.NET」,所以文件上看到「.NET 8 的 ASP.NET Core」與「ASP.NET Core 8」是同一件事;看到單獨的「ASP.NET 4.8」則一定是舊的 .NET Framework 產品線。

三、基本語法範例:Web Forms 與 Razor Pages

先看許多舊教材與既有系統使用的 Web Forms 內嵌寫法,再看同樣的事在 Razor Pages 怎麼寫,您就能一眼分辨手上的專案屬於哪一代。

1. 輸出文字與變數(Web Forms 傳統寫法)

ASPX(Web Forms,.NET Framework)
<%@ Page Language="C#" %>
<!DOCTYPE html>
<html lang="zh-Hant">
<body>
    <h2>ASP.NET C# 範例</h2>
    <%
        string name = "王小明";
        int number = 5;
        Response.Write("名字:" + name + "<br>");
        Response.Write("數字:" + number);
    %>
</body>
</html>

<%@ Page Language="C#" %> 宣告這一頁用 C#;<% %> 裡是 C# 程式,語法看起來很像 Classic ASP,但這裡的變數有型別(stringint),寫錯型別在編譯階段就會被抓出來。

2. 條件判斷與迴圈

ASPX(Web Forms)
<%
    int age = 20;
    if (age >= 18)
    {
        Response.Write("您已成年");
    }
    else
    {
        Response.Write("您尚未成年");
    }

    for (int i = 1; i <= 5; i++)
    {
        Response.Write("這是第 " + i + " 次迴圈<br>");
    }
%>

C# 的流程控制與 Java、JavaScript 幾乎相同:大括號包區塊、敘述以分號結尾、嚴格區分大小寫。

3. 同一件事的 Razor Pages 寫法

ASP.NET Core 的 Razor 語法用 @ 切換到 C#,比 <% %> 簡潔得多,而且畫面(.cshtml)與邏輯(.cshtml.cs)分成兩個檔案:

Index.cshtml(Razor Pages,ASP.NET Core)
@page
@model IndexModel
<h2>ASP.NET Core 範例</h2>
<p>名字:@Model.Name</p>

@if (Model.Age >= 18)
{
    <p>您已成年</p>
}
else
{
    <p>您尚未成年</p>
}

<ul>
@for (int i = 1; i <= 5; i++)
{
    <li>這是第 @i 次迴圈</li>
}
</ul>
Index.cshtml.cs(PageModel)
public class IndexModel : PageModel
{
    public string Name { get; set; } = "王小明";
    public int Age { get; set; } = 20;

    public void OnGet()
    {
        // 頁面以 GET 載入時執行,例如從資料庫讀資料
    }
}

Razor 會自動把 @Model.Name 這類輸出做 HTML 編碼,預設就防止了跨站腳本(XSS),這是它比 Response.Write 安全的地方。

四、表單處理與資料庫存取

表單靠模型繫結,資料庫靠 Entity Framework Core 或 ADO.NET。Razor Pages 的表單處理如下,注意 [BindProperty] 會自動把欄位值填進屬性:

Contact.cshtml
@page
@model ContactModel
<form method="post">
    姓名:<input asp-for="Name"><br>
    <button type="submit">送出</button>
</form>
@if (!string.IsNullOrEmpty(Model.Message))
{
    <p>@Model.Message</p>
}
Contact.cshtml.cs
public class ContactModel : PageModel
{
    [BindProperty]
    public string Name { get; set; } = "";
    public string Message { get; set; } = "";

    public void OnPost()
    {
        Message = $"您輸入的姓名是:{Name}";
    }
}

資料庫部分,多數新專案用 Entity Framework Core 以物件方式操作資料表;若要直接下 SQL,ADO.NET 的寫法如下,重點是用 SqlParameter 帶參數:

C#(ADO.NET)
using Microsoft.Data.SqlClient;

var connectionString = configuration.GetConnectionString("Default");
var results = new List<string>();

using (var conn = new SqlConnection(connectionString))
using (var cmd = new SqlCommand("SELECT Id, Name FROM Users WHERE Status = @status", conn))
{
    cmd.Parameters.AddWithValue("@status", 1);
    conn.Open();
    using (var reader = cmd.ExecuteReader())
    {
        while (reader.Read())
        {
            results.Add($"ID:{reader["Id"]},名字:{reader["Name"]}");
        }
    }
}
與舊教材不同的三點:連線字串放在 appsettings.json 而不是寫在程式裡;套件用 Microsoft.Data.SqlClient 而不是舊的 System.Data.SqlClient;所有外部輸入一律用參數帶入 SQL,字串串接是 SQL 注入的主要來源。

五、ASP、ASP.NET、ASP.NET Core 三者對照表

三個名字常被混用,這張表一次釐清。Classic ASP 的語法與現況另有〈ASP 是什麼〉專文。

項目 Classic ASP ASP.NET(.NET Framework) ASP.NET Core
推出年份199620022016
語言VBScript、JScriptC#、VB.NETC#、F#
執行方式直譯編譯編譯
作業系統Windows(IIS)Windows(IIS)Windows、Linux、macOS、容器
副檔名.asp.aspx、.cshtml(MVC 5).cshtml、.razor
開放原始碼部分是(MIT 授權)
現況維護模式,2000 年後無新版4.8 為最後主要版本,只有安全性更新所有新功能都在這裡
適合僅維護既有系統既有 Web Forms 系統維護所有新專案

六、版本與支援現況(2026)

.NET 每年 11 月發布一版,偶數版是長期支援(LTS)三年,奇數版是標準支援(STS)期間較短。依微軟的支援政策頁面,2026 年的情況是:

  • .NET 8(LTS):2023 年 11 月發布,支援到 2026 年 11 月,是目前最多既有 ASP.NET Core 專案所在的版本,年底前需規劃升級。
  • .NET 10(LTS):2025 年 11 月發布,支援到 2028 年 11 月,新專案應直接採用。
  • .NET 9(STS):2024 年 11 月發布,支援期較短,屬過渡版本。
  • .NET Framework 4.8 與 4.8.1:最後的主要版本,作為 Windows 元件隨作業系統支援,沒有新功能;Web Forms 專案會停在這裡。

實務上的判斷:新專案用 .NET 10;.NET 8 的專案在 2026 年內升到 10,LTS 之間升級通常改動不大;Web Forms 系統則要決定是繼續維護還是改寫成 Razor Pages 或 Blazor,因為它沒有升級到 Core 的路。

七、誰適合用 ASP.NET?主機與成本怎麼看

ASP.NET Core 適合已在微軟生態(SQL Server、Azure、Active Directory)的企業,以及需要高效能 API 或複雜商業邏輯的系統;對以官網與內容行銷為主的中小企業,PHP 仍是成本最低的選擇。從網頁設計公司的角度,決定因素通常不是語言優劣,而是:

  • 主機:ASP.NET Core 可跑 Linux,主機選擇已不再是問題;但 Web Forms 與 .NET Framework 專案仍需 Windows 主機,租金普遍高於 Linux 的 PHP 主機。
  • 團隊:公司內部已有 C# 工程師(常見於製造業與金融業的 IT 部門)時,用 ASP.NET 延伸出 Web 系統最順;反之要另外找 .NET 外包,人力成本高於 PHP。
  • 系統性質:需要與 ERP、Windows 網域帳號整合的內部系統,ASP.NET 有天然優勢;純資訊展示與詢問單的官網,任何語言都做得到,重點在技術 SEO與內容。

本站(newscan.com.tw)以 PHP 與 MySQL 建置,是依上述第一與第三點做的選擇,並非 ASP.NET 不好。伺服器端語言與網站排名沒有直接關係,Google 看的是輸出的 HTML、速度與內容品質。

八、結論

ASP.NET 是微軟以 C# 為核心的網頁框架,現在的主線是跨平台的 ASP.NET Core;舊的 Web Forms 只剩維護價值。學習它請直接從 .NET 10 的 Razor Pages 或 Minimal API 開始,並把 C# 基礎打穩,因為框架年年更新、語言才是不變的部分。

想釐清它與前身的關係,見〈ASP 是什麼〉;想比較不同伺服器端語言的取捨,回到〈網頁程式設計入門〉;前端互動仍然離不開 JavaScript,Blazor 只是把其中一部分換成 C#。

九、常見問答 FAQ

ASP.NET 是什麼?
ASP.NET 是微軟在 .NET 平台上的開放原始碼網頁開發框架,用 C#(也可用 F# 或 VB.NET)撰寫伺服器端程式,產生網頁、API 與即時服務。2002 年隨 .NET Framework 推出,2016 年起以跨平台的 ASP.NET Core 重寫,可部署在 Windows、Linux 與容器。它提供 Razor Pages、MVC、Web API、Blazor 等多種寫法,程式需要編譯,型別安全與效能是主要優勢。今天講 ASP.NET 多半指 ASP.NET Core。
ASP.NET 和 ASP 差在哪?
只有名字相承,技術完全不同。ASP(Classic ASP)是 1996 年的直譯式 VBScript 腳本,只能跑在 Windows 的 IIS,2000 年後沒有新版;ASP.NET 是 2002 年起建立在 .NET 上的編譯式框架,主要語言是 C#,ASP.NET Core 更可跨平台。兩者程式碼互不相容,.asp 頁面不能在 ASP.NET 執行,從 ASP 升級等於整站重寫。判斷方式很簡單:副檔名 .asp 是 Classic ASP,.aspx 或 .cshtml 是 ASP.NET。
ASP.NET Core 和 ASP.NET 有什麼不同?
ASP.NET(.NET Framework 4.x)是 2002 年至 2016 年的產品線,包含 Web Forms、MVC 5、Web API 2,只能部署在 Windows 與 IIS;.NET Framework 4.8 是最後的主要版本,只提供安全性更新。ASP.NET Core 是 2016 年起重寫的跨平台版本,開放原始碼,可跑 Windows、Linux、macOS 與容器,內建 Kestrel 網頁伺服器,包含 Razor Pages、MVC、Minimal API、Blazor 與 SignalR,所有新功能都在這裡。.NET 5 之後微軟把「.NET Core」簡稱為「.NET」,所以 .NET 8、.NET 10 的 ASP.NET 都屬於 Core 產品線。Web Forms 不會被移植到 Core。
學 ASP.NET 要先會 C# 嗎?
要,C# 是 ASP.NET 的核心語言,框架的每個部分都以 C# 撰寫。建議順序是先掌握 C# 基礎:變數與型別、類別與物件、集合、LINQ、async/await,再進入 ASP.NET Core 的 Razor Pages 或 Minimal API。同時需要 HTML 與 CSS 基礎,因為 Razor 頁面最終輸出的仍是 HTML;若要做前端互動,JavaScript 仍不可少,Blazor 只是讓部分互動改用 C# 撰寫。沒有 C# 基礎就直接學框架,會分不清問題出在語言還是框架。
ASP.NET 網站需要 Windows 主機嗎?
看產品線。ASP.NET Core 不需要,它可以部署在 Linux 主機、Docker 容器或各家雲端平台,用 Nginx 或 Apache 反向代理到內建的 Kestrel 伺服器,主機成本已與其他語言相近。舊的 ASP.NET(.NET Framework)與 Web Forms 則必須用 Windows 主機與 IIS,租金普遍高於 Linux 主機。台灣多數共享虛擬主機以 PHP 為主,提供 .NET 環境的業者較少,通常要租 VPS 或雲端主機自行部署。

參考來源

  1. Microsoft Learn,〈ASP.NET Core 概觀〉,Microsoft 官方文件。
  2. Microsoft Learn,〈選擇 ASP.NET 4.x 或 ASP.NET Core〉,Microsoft 官方文件。
  3. Microsoft,〈.NET and .NET Core Support Policy〉,Microsoft 官方支援政策。
  4. Microsoft Learn,〈ASP.NET Core 中的 Razor Pages 簡介〉,Microsoft 官方文件。
  5. 新視野網頁設計,〈ASP 是什麼?Classic ASP 語法介紹、與 ASP.NET 的差別及現況〉,本站自有內容。

.NET 各版本支援期限依 2026 年 9 月查閱的微軟支援政策頁面整理,以微軟公告為準;第七節為本站規劃網站技術架構時的實務判斷,不涉及特定客戶資料。

關於作者

內容揭露:本文由新視野網頁設計 SEO 團隊撰寫。文中連結的站內指南與延伸閱讀均為本站自有內容;新視野提供網頁設計與 SEO/AI SEO 服務,讀者在採用本文建議前請自行評估是否符合自身情況。文中引用的第三方研究與官方文件皆附可點擊出處,歡迎查證。

新視野網頁設計 SEO 團隊

新視野網頁設計自 2005 年起投入企業網站建置與搜尋行銷,服務範圍涵蓋 RWD 網站設計、技術 SEO、結構化資料佈署,以及 AI 搜尋時代的 AEO/GEO 內容優化。本文由新視野 SEO 團隊撰寫、審閱並持續維護更新。

服務據點:
台中(總公司)台中市南區忠明南路 758 號 21 樓 B4台北高雄
聯絡電話:
04-2260-1329
公司資訊:
關於我們公司位置線上詢價
對外平台:
FacebookLinkedIn
本站同主題內容:
ASP 是什麼網頁程式設計入門JSP 是什麼JavaScript 語法介紹

歡迎推廣本文,請務必連結(LINK)本文出處:新視野網頁設計公司