掌握 MVC 模型核心觀念,透過 Entity Framework Code First 建立 MovieDB 模型,自動產生控制器與視圖,完成 CRUD 功能原型。
模型包含除視圖與控制器邏輯外的所有應用程式邏輯:
模型負責控制與操作應用程式資料,是 MVC 架構的核心層。
專案範本預設包含 AccountModels.cs(安全相關模型)。新增領域模型時,建議依功能領域建立獨立檔案,如 MovieDB.cs。
MovieDB.cs → 加入using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.Entity;
namespace MvcDemo.Models
{
// 電影實體類別
public class MovieDB
{
public int ID { get; set; }
public string Title { get; set; }
public string Director { get; set; }
public DateTime Date { get; set; }
}
// 資料庫內容類別,繼承 DbContext
public class MovieDBContext : DbContext
{
// 對應資料庫 MovieDBs 資料表
public DbSet<MovieDB> Movies { get; set; }
}
}
MovieDB(單數),對應資料表會自動對應至 MovieDBs(複數)。這是 Entity Framework Code First 的預設慣例,確保模型正確對應資料表。
偵錯 → 建置 MvcDemo(或 Ctrl+Shift+B),確保模型編譯成功。
MoviesControllerMovieDB (MvcDemo.Models)MovieDBContext (MvcDemo.Models)Controllers/MoviesController.cs - 完整 CRUD ActionViews/Movies/ - 5 個視圖檔案:| 視圖檔案 | 對應 Action | 功能 |
|---|---|---|
| Create.cshtml | Create | 新增電影表單 |
| Delete.cshtml | Delete | 刪除確認頁面 |
| Details.cshtml | Details | 電影詳細資料 |
| Edit.cshtml | Edit | 編輯電影表單 |
| Index.cshtml | Index | 電影清單列表 |
MovieDBContext 時DbSet<T> 屬性名稱複數化(Movies → MovieDBs)ID 或 ClassNameID 自動設為 Primary Key + Identity為模型加入驗證屬性,自動套用至視圖與控制器:
public class MovieDB
{
public int ID { get; set; }
[Required(ErrorMessage = "片名為必填")]
[StringLength(100)]
[Display(Name = "電影片名")]
public string Title { get; set; }
[Required]
[Display(Name = "導演")]
public string Director { get; set; }
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
[Display(Name = "上映日期")]
public DateTime Date { get; set; }
}
執行應用程式(F5),點擊導航列 Movies 標籤,即可測試完整的 CRUD 功能:
恭喜!您已成功建立第一個 MVC 資料模型並自動產生完整 CRUD 介面。