其實我已經不知道我還會甚麼還能講甚麼
熊熊之間想到Model Binding這東西可以稍微講一下
明後天可能就開天窗了
這部分就做個補充
根據預設模型繫結會從下列 HTTP 要求的來源中
取得索引鍵/值組形式的資料:
如果預設來源不正確
使用下列其中一個屬性來指定來源:
我們來看看前幾張我們講的[ApiController]
在過去我們使用.Net FrameWork 時
我們使用ModelState.IsValid
來確認我們的模型資料是否符合我們的規範
在套用[ApiController]之後
我們不用再透過ModelState.IsValid 的語法來檢查
只要你傳入的東西不符合規定
就會自動回傳400 BadRequest
來看看怎麼對我們的模型作約束
我們一樣打開之前的專案
我們打開Product.cs
先引用命名空間
using System.ComponentModel.DataAnnotations;
在要驗證的欄位前面加入標籤
namespace MyFirstApi.Model
{
public class Product
{
[Required]
[StringLength(maximumLength:5,MinimumLength = 5, ErrorMessage = "請輸入5個字元")]
public string Id { get; set; }
[Required]
[MaxLength(10, ErrorMessage = "名字長度不得超過10")]
public string Name { get; set; }
[MinLength(2)]
public string Origin { get; set; }
[Range(20,50)]
public int Price { get; set; }
}
}
[Required]標籤表示欄位為必填
[StringLength]標籤表示欄位的長度必須介於max到min中
使用ErrorMessage能夠自訂錯誤訊息
[MaxLength]標籤表示欄位最大長度
[MinLength]標籤表示欄位最小長度
[Range(20,50)]表示數字需介於20-50之間
我們執行專案
試著加入一筆資料
{
"ID":"F001",
"Name": "葡萄",
"Origin": "US",
"Price": 80
}
可以看見因為ID的長度不對
而且價格>50
因此出現了兩個錯誤訊息
下列是部分內建驗證屬性:
可以在 System.ComponentModel.DataAnnotations 命名空間中找到驗證屬性的完整清單。