如何簡化空值檢查
public class MyEmployee
{
public string FirstName;
public string LastName;
public string Age;
public string Phone;
public string Gender;
}
我已經實作了以下空條件檢查
public async Task<bool> ValidateClient(MyEmployee Client)
{
**if(Client.FirstName == null ||Client.LastName==null ||Client.Age== null ||Client.Gender ==null||Client.Phone==null)**
{
throw new Argumentexception("Employee details to be provided")
}
}
我正在使用空檢查條件驗證 Employee 類的所有屬性,這可以在 C# 中簡化嗎?
uj5u.com熱心網友回復:
由于您使用的是 asp.net 核心,因此您可以選擇通過裝飾屬性來驗證您的模型:
public class MyEmployee
{
[Required]
public string FirstName;
[Required]
public string LastName;
[Required]
public string Age;
[Required]
public string Phone;
[Required]
public string Gender;
}
如果有,您可以在 HTTP 操作呼叫中驗證模型。
public async Task<IActionResult> OnPostAsync(MyEmployee model)
{
if (!ModelState.IsValid)
{
return BadRequest();
}
await yourUpdate();
return Ok();
}
注意:這僅在您使用模型系結器時有效,默認情況下在 MVC 和 API 操作中啟用。
有各種可用的驗證屬性。例如,添加StringLength使您可以選擇驗證長度 > 0。
各種默認值和正則運算式選項也可用。
它使驗證接近您的模型,并為您提供一個干凈整潔的 ActionResult 方法。
另請參閱Microsoft 檔案
更多內置屬性:
內置屬性
以下是一些內置的驗證屬性:
- [ValidateNever]:表示應從驗證中排除屬性或引數。
- [CreditCard]:驗證屬性是否具有信用卡格式。需要 jQuery 驗證附加方法。
- [比較]:驗證模型中的兩個屬性是否匹配。
- [EmailAddress]:驗證屬性是否具有電子郵件格式。
- [電話]:驗證屬性是否具有電話號碼格式。
- [范圍]:驗證屬性值是否在指定范圍內。
- [RegularExpression]:驗證屬性值是否匹配指定的正則運算式。
- [必需]:驗證該欄位不為空。有關此屬性行為的詳細資訊,請參閱 [必需] 屬性。
- [StringLength]:驗證字串屬性值不超過指定的長度限制。
- [Url]:驗證屬性是否具有 URL 格式。
- [遠程]:通過呼叫服務器上的操作方法來驗證客戶端上的輸入。有關此屬性行為的詳細資訊,請參閱 [Remote] 屬性。
這些有很多,您甚至可以自己構建它們。
uj5u.com熱心網友回復:
使用 Linq,您可以將資料與操作分開
if(new[] { Client.FirstName, Client.LastName, ..., Client.Phone }
.Any(field => field is null))
string首先,通過列出 DTO 的所有字串屬性來定義 s 的集合- 然后你對每個元素的前一個集合執行一個簡單的空檢查
更新#1:也檢查空字串
if(new[] { Client.FirstName, Client.LastName, ..., Client.Phone }
.Any(string.IsNullOrEmpty))
- 為了針對 null 或空字串進行測驗,您可以使用
string的IsNullOrEmpty靜態方法 - 如果您也想針對空格進行測驗,那么更喜歡
string.IsNullOrWhitespace - 以上
Any是簡寫形式.Any(field => string.IsNullOrEmpty(field))
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/431767.html
上一篇:基于用戶權限的動態選單生成
