首页 > 解决方案 > 如何使用流利的验证在一个类的另一个 IEnumerable 中验证一个类的 IEnumerable

问题描述

我有这些课程

public class CryptocurrencyDto
{
    public int RequestId { get; set; }
    public IEnumerable<Cryptocurrency> Cryptocurrencies { get; set; }
}

public class Cryptocurrency : BaseClass
{
    public string Ticker { get; set; }
    public string Name { get; set; }
    public double TotalSupply { get; set; }
    public double CirculatingSupply { get; set; }
    public IEnumerable<Note> Notes { get; set; }
}

public class Note
{
    public int NoteId { get; set; }
    public string Description { get; set; }
    public IEnumerable<Url> Urls { get; set; }
    public byte Image { get; set; }
    public int DisplayOrder { get; set; }
}

public class Url
{
    public string UrlId { get; set; }
    public string Link { get; set; }
    public string Description { get; set; }
}

我有这个端点

    [HttpPost]
    public void Post([FromBody] CryptocurrencyDto cryptocurrency)
    {

    }

我如何通过这些课程进行验证?到目前为止,我只知道如何验证第一堂课CryptocurrencyDto。我不知道如何到达其他班级。加密货币、注释和 URL。

标签: c#asp.net-coreasp.net-web-apiasp.net-web-api2fluentvalidation

解决方案


当您将 FluentValidation 添加到问题标签时,这是Collection Validation使用 FluentValidation:

public class CryptocurrencyDtoValidator : AbstractValidator<CryptocurrencyDto> {
  public CryptocurrencyDtoValidator() {
    RuleForEach(x => x.Cryptocurrency).NotNull();
  }
}

更多信息

但是还有许多其他方法可以对关联的类使用验证(例如Tor IEnumerable<T>):

  1. 创建和使用ValidationAttribute更多信息

  2. 实施IValidatableObject更多信息

  3. Controller检查关卡中的任何关联类。


推荐阅读