Code Behind(代碼隱藏)是 ASP.NET 引入的核心架構模式,將 UI 宣告(.aspx)與邏輯程式碼(.cs/.vb)分離,實現設計人員與開發人員並行作業、程式碼重用與維護性提升、部署時原始碼保護。
| 維度 | 傳統 ASP | ASP.NET Code Behind |
|---|---|---|
| 程式碼組織 | HTML 與 VBScript/JScript 混雜 | .aspx (UI) + .cs/.vb (邏輯) 分離 |
| 修改介面影響 | 易誤改邏輯程式碼 | UI 變更不觸及後端類別 |
| 程式碼重用 | 困難,常靠 Copy-Paste | 類別繼承、部分類別、基類封裝 |
| 偵錯體驗 | 斷點支援弱 | 完整 Visual Studio 偵錯 |
| 部署保護 | 原始碼直接暴露 | 編譯為 DLL,僅部署組件 |
<%@ Page Language="C#" Inherits="SendMail" CodeFile="send.cs" %>
<html><body>
<form runat="server">
<table>
<tr><td>姓名:</td><td><asp:TextBox id="txtName" runat="server" /></td></tr>
<tr><td>Email:</td><td><asp:TextBox id="txtEmail" runat="server" /></td></tr>
<tr><td>內容:</td><td><asp:TextBox id="txtMsg" TextMode="MultiLine" runat="server" /></td></tr>
<tr><td colspan="2"><asp:Button Text="寄出" OnClick="btnSend_Click" runat="server" /></td></tr>
</table>
</form>
</body></html>
using System.Web.UI;
using System.Web.Mail;
public class SendMail : Page
{
protected TextBox txtName, txtEmail, txtMsg;
protected Button btnSend;
void btnSend_Click(Object sender, EventArgs e)
{
MailMessage mail = new MailMessage();
mail.To = "admin@example.com";
mail.From = txtEmail.Text;
mail.Subject = "來自 " + txtName.Text + " 的留言";
mail.Body = txtMsg.Text;
SmtpMail.SmtpServer = "localhost";
SmtpMail.Send(mail);
}
}
@ Page Inherits="SendMail" CodeFile="send.cs" 指定頁面類別與原始碼檔protected TextBox txtName)透過分部類別機制與 .aspx 設計器產生的欄位對應ASP.NET 2.0+ 採用 partial class,.aspx 設計器產生 Partial Class _Default,開發者在 _Default.aspx.cs 撰寫另一部分,編譯時合併。這比 1.x 的繼承模式更清晰、支援設計器雙向同步。