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

ASP.NET Code Behind 技術深度解析:分離關注點的實踐

     編輯:關於ASP.NET

Code Behind(代碼隱藏)是 ASP.NET 引入的核心架構模式,將 UI 宣告(.aspx)與邏輯程式碼(.cs/.vb)分離,實現設計人員與開發人員並行作業、程式碼重用與維護性提升、部署時原始碼保護。

傳統 ASP 與 Code Behind 對比

維度傳統 ASPASP.NET Code Behind
程式碼組織HTML 與 VBScript/JScript 混雜.aspx (UI) + .cs/.vb (邏輯) 分離
修改介面影響易誤改邏輯程式碼UI 變更不觸及後端類別
程式碼重用困難,常靠 Copy-Paste類別繼承、部分類別、基類封裝
偵錯體驗斷點支援弱完整 Visual Studio 偵錯
部署保護原始碼直接暴露編譯為 DLL,僅部署組件

完整範例:電子郵件發送

UI 定義

<%@ 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" 指定頁面類別與原始碼檔
  • ASP.NET 執行階段動態編譯 .aspx 產生衍生類別,與 CodeBehind 類別合併為完整頁面類別
  • 控件宣告(protected TextBox txtName)透過分部類別機制與 .aspx 設計器產生的欄位對應

現代演進:部分類別

ASP.NET 2.0+ 採用 partial class,.aspx 設計器產生 Partial Class _Default,開發者在 _Default.aspx.cs 撰寫另一部分,編譯時合併。這比 1.x 的繼承模式更清晰、支援設計器雙向同步。

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