iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 12
0

本篇重點

ASP .NET Core Model
Model Binding


前言

前面講完了MVC的生命週期
接下來就要逐一的去討論每個階段的部分
今天討論一下MVC的M - Model


Model

MVC的設計原則

MVC是一個設計模式
通常會follow這樣的方向去做設計

  • Model要肥
    跟資料真正有關係的都在這裡
  • View要笨
    重購需要建立在好維護上,看下去可以清楚知道在幹嘛
    而不是硬要使用架構
  • Controller要輕
    專注在呈現面的邏輯不要加入太多的其他的邏輯

定義

MVC裡面的M(Model)
其實就是一個class
主要的職責為:

  • 資料存取,執行CRUD
  • 商業邏輯的輸入驗證,模型驗證都屬於Modle的主職責
  • 資料庫的CRUD

如下圖就是我們建立的一個Movie的Model
其中Model還可以在裡面增加一些驗證設定或是限制(DataAnnotations)
後續會再討論到這個部分


Model Binding

定義

主要是http request 後和各個action溝通的橋樑
透過這個機制,可以提供controller 拿到這些外部進來的參數

簡單說就是抓取http request去解析成我們要的參數到controller

分類

主要分成三種

  • Form values:
    透過表單使用HTTP Post 傳進來的方式
    當網頁上的一個表單送出後
    會觸發一個Http Post的請求

    而在controller裡面會透過傳進來的Movie去抓到request進來的資料

  • Route values:
    在一開始Statup.cs已經有先註冊好Route的Middleware
    因此可以透過Router的設定抓到request進來的值,通常會是一個id
    到controller之後再去取出整筆的資料做回傳

    https://localhost:5001/Movie/Details/2
    其中的2是id

  • Query string:
    當get 傳進來將參數帶到後面所使用的方式,直接接在URL後面
    通常使用時要記得加密,不然會有資安的問題

    https://localhost:5001/Movie?CustomerID=100
    問號後面的參數名稱和controller的參數要相同


參考資料
https://dotnettutorials.net/lesson/model-binding-asp-net-core/


上一篇
Day 11 使用Scaffold 在VS2019 for Mac 建立CRUD
下一篇
Day 13 Controller Initialization
系列文
ASP.NET Core 入門實戰30天30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言