我想在某些情况下禁用数据注解验证。假设我们有两个DTO和两个端点
public class CreateBulkProductDto
{
[Required]
public List<CreateProductDto> Products { get; set; }
}
public class CreateProductDto {
[Required]
[StringLength(100)]
public string Name { get; set; }
[Required]
public List<CreateProductCategoryDto> Categories { get; set; }
[Required]
public List<string> Barcodes { get; set; }
}
终点;
public virtual async Task<List<CreateOrUpdateBulkProductResultDto>> CreateBulkAsync(CreateBulkProductDto input){.....}
public virtual async Task<string> CreateAsync(CreateProductDto input){....}
当请求到达BullkAsync时,我希望禁用验证,但当请求到达BullkAsync时,我希望验证起作用。我该怎么解决这个问题
1条答案
按热度按时间9bfwbjaz1#
我为此写了一个扩展方法。它目前只适用于单个键值。但我想你能自己扩展这个。
只有在显式检查
ModelState.IsValid
时,此代码才能工作。请确保不要过度使用它,因为无论如何都不建议跳过验证。
然后你可以像这样实现它: