![](/img/trans.png)
[英]ASP.NET Core Pass Enumerable of objects to Get Action on Controller
[英]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.