
- ASP.NET MVC 教程
- ASP.NET MVC - 首頁
- ASP.NET MVC - 概述
- ASP.NET MVC - 模式
- ASP.NET MVC - 環境設定
- ASP.NET MVC - 入門
- ASP.NET MVC - 生命週期
- ASP.NET MVC - 路由
- ASP.NET MVC - 控制器
- ASP.NET MVC - 操作
- ASP.NET MVC - 過濾器
- ASP.NET MVC - 選擇器
- ASP.NET MVC - 檢視
- ASP.NET MVC - 資料模型
- ASP.NET MVC - 輔助方法
- ASP.NET MVC - 模型繫結
- ASP.NET MVC - 資料庫
- ASP.NET MVC - 驗證
- ASP.NET MVC - 安全性
- ASP.NET MVC - 快取
- ASP.NET MVC - Razor
- ASP.NET MVC - 資料註釋
- Nuget 包管理
- ASP.NET MVC - Web API
- ASP.NET MVC - 腳手架
- ASP.NET MVC - Bootstrap
- ASP.NET MVC - 單元測試
- ASP.NET MVC - 部署
- ASP.NET MVC - 自託管
- ASP.NET MVC 有用資源
- ASP.NET MVC - 快速指南
- ASP.NET MVC - 有用資源
- ASP.NET MVC - 討論
ASP.NET MVC - 腳手架
ASP.NET 腳手架是用於 ASP.NET Web 應用程式的程式碼生成框架。Visual Studio 2013 包含 MVC 和 Web API 專案的預安裝程式碼生成器。當您想要快速新增與資料模型互動的程式碼時,可以將腳手架新增到您的專案中。使用腳手架可以減少在專案中開發標準資料操作所需的時間。
正如您所看到的,我們已經為 Index、Create、Edit 操作建立了檢視,並且還需要更新操作方法。但 ASP.Net MVC 提供了一種更簡單的方法來使用腳手架建立所有這些檢視和操作方法。
讓我們來看一個簡單的例子。我們將建立相同的示例,其中包含一個模型類 Employee,但這次我們將使用腳手架。
步驟 1 - 開啟 Visual Studio 並點選檔案 → 新建 → 專案選單選項。
將開啟一個新的專案對話方塊。

步驟 2 - 從左側窗格中,選擇模板 → Visual C# → Web。
步驟 3 - 在中間窗格中,選擇 ASP.NET Web 應用程式。
步驟 4 - 在名稱欄位中輸入專案名稱“MVCScaffoldingDemo”,然後點選確定繼續。您將看到以下對話方塊,提示您設定 ASP.NET 專案的初始內容。

步驟 5 - 為簡單起見,選擇“空”選項,並在“新增資料夾和核心引用”部分選中 MVC 複選框,然後點選確定。
它將建立一個具有最少預定義內容的基本 MVC 專案。
Visual Studio 建立專案後,您將在解決方案資源管理器視窗中看到許多檔案和資料夾。

新增 Entity Framework 支援
第一步是安裝 Entity Framework。右鍵點選專案並選擇 NuGet 包管理器 → 管理解決方案的 NuGet 包…

它將開啟“NuGet 包管理器”。在搜尋框中搜索 Entity framework。

選擇 Entity Framework 並點選“安裝”按鈕。它將開啟“預覽”對話方塊。

點選確定繼續。

點選“我接受”按鈕開始安裝。

安裝 Entity Framework 後,您將在輸出視窗中看到訊息,如上圖所示。
新增模型
要新增模型,請右鍵點選解決方案資源管理器中的 Models 資料夾,然後選擇新增 → 類。您將看到“新增新項”對話方塊。

在中間窗格中選擇類,並在名稱欄位中輸入 Employee.cs。
使用以下程式碼向 Employee 類新增一些屬性。
using System; namespace MVCScaffoldingDemo.Models { public class Employee{ public int ID { get; set; } public string Name { get; set; } public DateTime JoiningDate { get; set; } public int Age { get; set; } } }
新增 DBContext
我們有一個 Employee 模型,現在我們需要新增另一個類,它將與 Entity Framework 通訊以檢索和儲存資料。以下是 Employee.cs 檔案中的完整程式碼。
using System; using System.Data.Entity; namespace MVCScaffoldingDemo.Models{ public class Employee{ public int ID { get; set; } public string Name { get; set; } public DateTime JoiningDate { get; set; } public int Age { get; set; } } public class EmpDBContext : DbContext{ public DbSet<Employee> Employees { get; set; } } }
如您所見,“EmpDBContext”派生自一個名為“DbContext”的 EF 類。在這個類中,我們有一個名為 DbSet 的屬性,它基本上表示您想要查詢和儲存的實體。
現在讓我們構建解決方案,您將在專案成功構建時看到訊息。

新增腳手架項
要新增腳手架,請右鍵點選解決方案資源管理器中的 Controllers 資料夾,然後選擇新增 → 新建腳手架項。

它將顯示新增腳手架對話方塊。

在中間窗格中選擇使用 Entity Framework 的 MVC 5 控制器,然後點選“新增”按鈕,這將顯示新增控制器對話方塊。

從模型類下拉列表中選擇 Employee,從資料上下文類下拉列表中選擇 EmpDBContext。您還將看到控制器名稱預設為選中狀態。
點選“新增”按鈕繼續,您將在 EmployeesController 中看到以下程式碼,該程式碼由 Visual Studio 使用腳手架建立。
using System.Data.Entity; using System.Linq; using System.Net; using System.Web.Mvc; using MVCScaffoldingDemo.Models; namespace MVCScaffoldingDemo.Controllers { public class EmployeesController : Controller{ private EmpDBContext db = new EmpDBContext(); // GET: Employees public ActionResult Index(){ return View(db.Employees.ToList()); } // GET: Employees/Details/5 public ActionResult Details(int? id){ if (id == null){ return new HttpStatusCodeResult(HttpStatusCode.BadRequest); } Employee employee = db.Employees.Find(id); if (employee == null){ return HttpNotFound(); } return View(employee); } // GET: Employees/Create public ActionResult Create(){ return View(); } // POST: Employees/Create // To protect from overposting attacks, please enable the specific properties you want to bind to, for // more details see http://go.microsoft.com/fwlink/?LinkId=317598. [HttpPost] [ValidateAntiForgeryToken] public ActionResult Create([Bind(Include = "ID,Name,JoiningDate,Age")] Employee employee){ if (ModelState.IsValid){ db.Employees.Add(employee); db.SaveChanges(); return RedirectToAction("Index"); } return View(employee); } // GET: Employees/Edit/5 public ActionResult Edit(int? id){ if (id == null){ return new HttpStatusCodeResult(HttpStatusCode.BadRequest); } Employee employee = db.Employees.Find(id); if (employee == null){ return HttpNotFound(); } return View(employee); } // POST: Employees/Edit/5 // To protect from overposting attacks, please enable the specific properties you want to bind to, for // more details see http://go.microsoft.com/fwlink/?LinkId=317598. [HttpPost] [ValidateAntiForgeryToken] public ActionResult Edit([Bind(Include = "ID,Name,JoiningDate,Age")]Employee employee){ if (ModelState.IsValid){ db.Entry(employee).State = EntityState.Modified; db.SaveChanges(); return RedirectToAction("Index"); } return View(employee); } // GET: Employees/Delete/5 public ActionResult Delete(int? id){ if (id == null){ return new HttpStatusCodeResult(HttpStatusCode.BadRequest); } Employee employee = db.Employees.Find(id); if (employee == null){ return HttpNotFound(); } return View(employee); } // POST: Employees/Delete/5 [HttpPost, ActionName("Delete")] [ValidateAntiForgeryToken] public ActionResult DeleteConfirmed(int id){ Employee employee = db.Employees.Find(id); db.Employees.Remove(employee); db.SaveChanges(); return RedirectToAction("Index"); } protected override void Dispose(bool disposing){ if (disposing){ db.Dispose(); } base.Dispose(disposing); } } }
執行您的應用程式並指定以下 URL https://:59359/employees。您將看到以下輸出。

您可以看到 View 中沒有資料,因為我們尚未向由 Visual Studio 建立的資料庫中新增任何記錄。
讓我們透過點選“新建”連結從瀏覽器中新增一條記錄,它將顯示 Create 檢視。

讓我們在以下欄位中新增一些資料。

點選“建立”按鈕,它將更新 Index 檢視。

您可以看到新記錄也已新增到資料庫中。

如您所見,我們已經使用腳手架實現了相同的示例,這是一種更簡單的方法,可以從您的模型類建立檢視和操作方法。