解釋 ASP.NET 中的 MVC 模式
MVC 代表模型-檢視-控制器。它是一種用於軟體應用程式的架構模式。Trygve Reenskaug 於 1979 年提出了該模式,用於開發互動式應用程式。在這種模式下,應用程式被劃分為三個元件:模型、檢視和控制器。
模型
模型維護應用程式的狀態。狀態可以是瞬態的,即儲存在記憶體中,也可以是持久化的,即儲存到資料庫中。
模型不僅僅是持有狀態。它對資料執行業務邏輯,對資料強制執行業務規則,並且可以使用領域模型來操作資料。模型充當守門人和資料儲存。
檢視
檢視根據模型中的資料生成並顯示使用者介面。在收到請求後,模型從資料庫或記憶體中獲取資料,處理它,並將其傳遞給檢視。然後,檢視決定如何將該資料呈現給使用者。
控制器
控制器協調應用程式流程,並在檢視和控制器之間充當中間人。
控制器接收請求。根據請求的內容,控制器使用模型構建資料,然後將其轉發給檢視進行顯示。
這是一個說明 Web 應用程式上下文中 MVC 模式的圖表。箭頭上的數字表示使用者請求的處理順序。
使用者與 Web 應用程式互動,該應用程式嚮應用程式傳送 HTTP 請求。此請求由控制器攔截和處理。
控制器使用來自請求的資料來呼叫領域模型。
領域模型從資料庫(或外部資源)獲取資料,強制執行業務規則並根據業務邏輯處理資料
處理後的資料返回給控制器。
控制器將資料傳遞給檢視。檢視使用 HTML 模板和資料生成使用者介面。
然後,檢視將生成的 HTML 傳送到 Web 應用程式,然後由瀏覽器顯示。
MVC 模式確保了“關注點分離”原則。例如,檢視從不處理傳入資料,模型不關心如何顯示資料,控制器不執行任何業務邏輯。每個元件都有其明確定義的職責。這使得應用程式易於開發和維護,因為它隨著複雜性的增加而增長。
最初,MVC 模式是為了簡化在桌面執行的傳統 GUI 應用程式的開發而開發的。後來它被用於 Web 應用程式。Ruby on Rails 框架推廣了 MVC 模式,後來被其他框架採用。
在 ASP.NET 應用程式中,MVC 元件由 C# 類處理。例如,這是一個表示使用者的模型類。
示例
// Models/User.cs namespace app.Models{ public class User{ public int ID { get; set; } public string Name { get; set; } public string Salary { get; set; } } }
渲染使用者的檢視可能如下所示
// Views/User.cshtml <div class="user"> <div class="name"> <a href="/users/@user.ID">@user.Name</a> </div> <div class=salary> @user.Salary </div> </div>
最後,這是一個透過獲取使用者模型為使用者構建檢視的控制器。
// Controllers/UserController namespace app.Controllers{ public class UserController : BaseController{ public IActionResult User(int id){ // Get the user from the database User user = _service.GetUser(id); // Render the user.cshtml view, by providing the user model return View(user); } } }