ASP.NET 3.5 Extensions CTP 引入的 ASP.NET Dynamic Data,是一套以慣例優於設定為核心的架構,能讓開發者在幾分鐘內建立完整的資料導向網站(CRUD 頁面、驗證、分頁、排序、外鍵導航),且無需手寫任何 ASPX/CSHTML 頁面。它自動根據 LINQ to SQL 或 Entity Framework 的實體模型,動態產生列表、明細、新增、編輯、刪除頁面。
[DisplayName]、[Required]、[Range]、[UIHint] 等屬性客製化顯示與驗證。/Products/Edit/5)。System.Web.DynamicData、System.ComponentModel.DataAnnotations。.dbml) 或 Entity Framework 模型 (.edmx)。Global.asax 中註冊模型:MetaModel.Default.RegisterContext(typeof(MyDataContext), new ContextConfiguration() { ScaffoldAllTables = true });web.config 確認 <httpModules>、<handlers> 已載入 DynamicData 模組。~/DynamicData/ 即可看到自動產生的管理介面。在 ~/DynamicData/FieldTemplates/ 下建立 Enum_Edit.ascx、ForeignKey_Edit.ascx 等,或使用 [UIHint("CustomTemplate")] 指定特定欄位使用自訂樣板。
修改 ~/DynamicData/PageTemplates/List.aspx、Edit.aspx 等,調整版面配置、加入按鈕、整合權限控制。
[MetadataType(typeof(ProductMetadata))]
public partial class Product { }
public class ProductMetadata {
[DisplayName("產品名稱")]
[Required(ErrorMessage = "必填")]
[StringLength(100)]
public string Name { get; set; }
[UIHint("Currency")]
public decimal Price { get; set; }
[ScaffoldColumn(false)]
public DateTime CreatedDate { get; set; } // 隱藏欄位
}
| 適用 | 不適用 |
|---|---|
| 後台管理介面 (Admin/Back-office) | 高度客製化的前台使用者介面 |
| 快速原型開發、內部工具 | 複雜商業邏輯交互流程 (Wizard、多步驟表單) |
| 標準 CRUD 為主的資料維護 | 需要精細像素級控制的設計導向專案 |
ASP.NET Core 時代,Dynamic Data 已不再積極維護。現代專案建議採用:
Dynamic Data 為當時「無程式碼生成管理介面」的先驅,其慣例優於設定的設計哲學,至今仍影響著現代 Scaffolding 與 Low-Code 工具的發展。