iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 21
1
Modern Web

.Net Core 網站開發 101系列 第 21

ASP.NET Core MVC

MVC 是什麼?

MVC 是 Model-View-Controller 的縮寫,在 MVC 架構下,會把應用程式分類成三個不同的組件,也就是模型 (Model)視圖 (View)控制器 (Controller),不同組件所負責的任務都不相同,以達到關注點分離的目的。客戶端的請求會先由路由(明天會說)傳送到 Controller,由 Controller 透過 Model 取得資料,再選擇回傳給客戶端的 View。三組元件彼此的相依關係與各自的工作如下:
https://ithelp.ithome.com.tw/upload/images/20181104/201078757y6Bme3g9L.png

圖片來源:https://docs.microsoft.com/en-us/aspnet/core/mvc/overview

Model

在應用程式中,負責資料模型的定義、商業邏輯、取得或驗證資料等工作。例如:使用強型別檢視時,通常會定義一個 ViewModel 的類型,用來封裝在檢視中需要使用的資料,Controller 則是會負責將對應的資料指定給 ViewModel 的實例。

可以參考其他常用的 Model 類型

View

負責把資料呈現到客戶端。ASP.NET MVC 是使用 Razor 將 .NET 程式碼轉換成 HTML。View 中應該只包含與顯示內容有關的邏輯,簡單來說就是越簡單越好。

Controller

負責在接收請求後與 Model 溝通,再決定要由哪個 View 來呈現資料。

ASP.NET Core MVC

如果過去有寫過 ASP.NET MVC 的讀者,轉移到 ASP.NET Core MVC 應該是不太會有什麼感覺的。兩者的觀念一致,使用上也沒有什麼差別。但不用再為了寫 WebAPI 另外參考一堆相依了!(歡呼)

在 ASP.NET Core 應用程式中,需要在 Startup.ConfigureServices 中加入 MVC 的服務,並在 Startup.Configure 中設定 MVC 中介層:

public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddMvc();
    }

    public void Configure(IApplicationBuilder app)
    {
        app.UseMvc(routes =>
        {
            routes.MapRoute(
                name: "default",
                template: "{controller=Home}/{action=Index}/{id?}");
        });

        // 或者用下面這行取代
        // app.UseMvcWithDefaultRoute();
    }
}

參考資料


上一篇
Entity Framework Core - 2/2
下一篇
Routing 路由
系列文
.Net Core 網站開發 10131

尚未有邦友留言

立即登入留言