C# 简化 null 检查条件

jub*_*ubi 3 c# asp.net-core

如何简化空值检查

public class MyEmployee
{
    public string FirstName;
    public string LastName;
    public string Age;
    public string Phone;
    public string Gender;
}
Run Code Online (Sandbox Code Playgroud)

我已经实现了以下空条件检查

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")
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在使用 null 检查条件验证 Employee 类的所有属性,这可以在 C# 中简化吗?

Ste*_*fan 10

由于您使用的是 asp.net core,因此您可以选择通过装饰属性来验证模型:

public class MyEmployee
{
    [Required]
    public string FirstName;
    [Required]
    public string LastName;
    [Required]
    public string Age;
    [Required]
    public string Phone;
    [Required]
    public string Gender;
}
Run Code Online (Sandbox Code Playgroud)

如果有的话,您可以从 HTTP 操作调用中验证模型。

public async Task<IActionResult> OnPostAsync(MyEmployee model)
{
    if (!ModelState.IsValid)
    {
        return BadRequest();
    }
    await yourUpdate();
    return Ok();
}
Run Code Online (Sandbox Code Playgroud)

注意:这仅在您使用模型绑定器时才有效,模型绑定器默认在 MVC 和 API 操作中启用。

有多种可用的验证属性。例如,添加StringLength使您可以选择验证长度 > 0。

还可以使用各种默认值和正则表达式选项。

它将验证靠近您的模型,并为您留下一个漂亮干净的 ActionResult 方法。

另请参阅微软文档

更多内置属性:

内置属性

以下是一些内置验证属性:

  • [ValidateNever]:指示应从验证中排除属性或参数。
  • [CreditCard]:验证该属性是否具有信用卡格式。需要 jQuery 验证附加方法。
  • [比较]:验证模型中的两个属性是否匹配。
  • [EmailAddress]:验证该属性是否具有电子邮件格式。
  • [电话]:验证该属性是否具有电话号码格式。
  • [范围]:验证属性值是否在指定范围内。
  • [RegularExpression]:验证属性值是否与指定的正则表达式匹配。
  • [必需]:验证该字段不为空。有关此属性行为的详细信息,请参阅 [Required] 属性。
  • [StringLength]:验证字符串属性值不超过指定的长度限制。
  • [Url]:验证属性是否具有 URL 格式。
  • [远程]:通过调用服务器上的操作方法来验证客户端上的输入。有关此属性行为的详细信息,请参阅 [Remote] 属性。

这些有很多,您甚至可以自己构建它们。