ASP.NET MVC - 腳手架



ASP.NET 腳手架是用於 ASP.NET Web 應用程式的程式碼生成框架。Visual Studio 2013 包含 MVC 和 Web API 專案的預安裝程式碼生成器。當您想要快速新增與資料模型互動的程式碼時,可以將腳手架新增到您的專案中。使用腳手架可以減少在專案中開發標準資料操作所需的時間。

正如您所看到的,我們已經為 Index、Create、Edit 操作建立了檢視,並且還需要更新操作方法。但 ASP.Net MVC 提供了一種更簡單的方法來使用腳手架建立所有這些檢視和操作方法。

讓我們來看一個簡單的例子。我們將建立相同的示例,其中包含一個模型類 Employee,但這次我們將使用腳手架。

步驟 1 - 開啟 Visual Studio 並點選檔案 → 新建 → 專案選單選項。

將開啟一個新的專案對話方塊。

New Dialog

步驟 2 - 從左側窗格中,選擇模板 → Visual C# → Web。

步驟 3 - 在中間窗格中,選擇 ASP.NET Web 應用程式。

步驟 4 - 在名稱欄位中輸入專案名稱“MVCScaffoldingDemo”,然後點選確定繼續。您將看到以下對話方塊,提示您設定 ASP.NET 專案的初始內容。

MVCScaffoldingDemo

步驟 5 - 為簡單起見,選擇“空”選項,並在“新增資料夾和核心引用”部分選中 MVC 複選框,然後點選確定。

它將建立一個具有最少預定義內容的基本 MVC 專案。

Visual Studio 建立專案後,您將在解決方案資源管理器視窗中看到許多檔案和資料夾。

Project Created by Visual Studio

新增 Entity Framework 支援

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

NuGet Package Manager

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

Entity Framework Search Box

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

Open Preview Dialog

點選確定繼續。

Click Ok to Continue

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

I Accept Button Installation

安裝 Entity Framework 後,您將在輸出視窗中看到訊息,如上圖所示。

新增模型

要新增模型,請右鍵點選解決方案資源管理器中的 Models 資料夾,然後選擇新增 → 類。您將看到“新增新項”對話方塊。

Item Dialog

在中間窗格中選擇類,並在名稱欄位中輸入 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 的屬性,它基本上表示您想要查詢和儲存的實體。

現在讓我們構建解決方案,您將在專案成功構建時看到訊息。

Project Successfully Build

新增腳手架項

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

New Scaffolded Item

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

Display Scaffold Dialog

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

Entity Framework Middle Pane

從模型類下拉列表中選擇 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。您將看到以下輸出。

Run Your Application

您可以看到 View 中沒有資料,因為我們尚未向由 Visual Studio 建立的資料庫中新增任何記錄。

讓我們透過點選“新建”連結從瀏覽器中新增一條記錄,它將顯示 Create 檢視。

Clicking Create New

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

Adding Data in Field

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

Update Index View

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

New Record Added

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

廣告