簡體   English   中英

如何在 Asp.Net Core 中為 en Enumerable 添加每個元素驗證?

[英]How to add a per element validation for en Enumerable in Asp.Net Core?

我有這個將從正文映射的字段:

[Required]
public IReadOnlyCollection<long?> Ids { get; set; }

我想向元素本身添加一個必需的屬性(或者更確切地說是任意驗證屬性)(即我希望驗證數組的每個元素)。

我可以創建一個具有 Id 的 class ,但是我需要從 JSON 傳遞一個對象數組,而理想情況下我希望得到一個這樣的數組[1,2,3,4]

是否有可能與一些技巧有關,我沒有設法弄清楚?

您可以創建一個自定義屬性,該屬性將檢查 IEnumerable 上的非空值:

    [AttributeUsage(AttributeTargets.Property | AttributeTargets.Field, AllowMultiple = false)]
sealed public class NonNullElementsAttribute : ValidationAttribute{

 public override bool IsValid(object value)
 {
    // cast object to IEnumerable
    // Validate your logic.
 }
}

您可以將此屬性放在元素的頂部

[Required]
[NonNullElements]
public IReadOnlyCollection<long?> Ids { get; set; }

您可以通過使其成為驗證每個元素的更通用的列表檢查來使其更加通用。 例如,對於字符串類型,您可能需要 string.IsNullOrWhiteSpace

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM