iT邦幫忙

2017 iT 邦幫忙鐵人賽
DAY 20
1
Modern Web

我的30天MVC從零到不知道多少學習筆記系列 第 20

從零開始的MVC開發-Model的資料驗證-部分類別

前面講了一長串的Model Binding!!
(其實我也沒想到會打到這麼多篇~~
現在來講講Model資料驗證的部分~

MVC提供了很多資料驗證的方式~可以寫在Model內
在ModelBinding前進行資料驗證~
例如"資料長度驗證","必填欄位驗證","email格式驗證"...
我剛學習MVC的時候(其實就上個月),還真的蠢蠢的寫在Model裡面~
寫的嘔心瀝血~洋洋灑灑~
然後某次更動了資料庫欄位後(其實就上禮拜...)~按下了"從資料庫更新模型"之後...
我的嘔心瀝血~我的洋洋灑灑~~就這樣隨風而逝了.....
我當下的表情真的是...Q口Q"我的資料驗證呢?我的DisplayName呢?"

好的於是經過這次教訓
爬了文翻了書終於發現要讓驗證不消失~就必須要另外寫在部分類別內!!
所以有了這篇~
這篇簡單的紀錄一下如何創建Model的部分類別~~~~
提供你一個可以盡情寫資料驗證的地方~~
再也不用怕更新模型後驗證消失QQ
設置部分類別的步驟如下~

  1. 在Models內新增一個Partials資料夾
  2. 在資料夾內新增一個跟目標Model同名的類別
  3. 移除namespace後面的".Partials"
  4. 在類別宣告上加上"partial"關鍵字
  5. 在部分類別內新增一個內部類別,名稱建議是"部分類別+MD",用來區別
  6. 複製Model內的屬性到剛剛新增的內部類別中
  7. 在部分類別加上[MetadataType(typeof(內部類別))]屬性,這屬性是將Model與內部類別產生關連

好像寫了很多又複雜~
直接看範例會比較簡單!!~

namespace demoApp.Models
{
    [MetadataType(typeof(PeopleMD))]
    public partial class People
    {
        public class PeopleMD
        {
            [DisplayName("姓名")]
            public string Name{get;set;}
            [DisplayName("身高")]
            public int Height{get;set;}
        }	
    }
}

簡單來說~最後的成果要長成這樣就對了!!
重點是要記得把namespace最後面的".Partials"刪掉
要跟目標的Model同一層~才能關聯到~
後面再來寫寫幾種常用的資料驗證格式


上一篇
從零開始的MVC開發-View對Controller的回應-ModelBinding(5)
下一篇
從零開始的MVC開發-取消SQL資料庫(正在還原...)
系列文
我的30天MVC從零到不知道多少學習筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
rong105100313
iT邦新手 4 級 ‧ 2021-08-24 16:47:13

推!我也遇到這樣的問題,從這找到答案了

我要留言

立即登入留言