我有下面的类:
public class CreateJob
{
[Required]
public int JobTypeId { get; set; }
public string RequestedBy { get; set; }
public JobTask[] TaskDescriptions { get; set; }
}
我想在TaskDescriptions
上面加上一个数据注解,这样数组就必须包含至少一个元素,就像[Required]
一样。这可能吗?
8条答案
按热度按时间dfuffjeb1#
它可以使用标准的Required和MinLength验证属性来完成,但仅适用于数组:
goqiplq22#
我以前见过用于此目的的自定义验证属性,如下所示:
(我给出了一个带有列表的示例,但可以适用于数组,也可以使用list)
归功于Antonio Falcão Jr.的优雅
yptwkmov3#
请允许我在.NET核心中使用MinLengthAttribute的附带说明。
微软建议使用.NET Core 2.0以上版本的Razor Pages。
当前,使用MinLengthAttribute对PageModel中的属性进行验证不起作用:
当SelectedStores.Count()== 0时,ModelState.IsValid返回True。
使用.NET Core 2.1预览版2进行测试。
yrdbyhpb4#
下面是@dove解决方案的一个改进版本,它可以处理不同类型的集合,如HashSet、List等...
vjrehmav5#
必须使用2个标准注记属性
8ftvxx2r6#
除了mynkow的回答之外,我还添加了向属性传递最小计数值并生成有意义的失败消息的功能:
像这样使用它:
ztmd8pv57#
只是将Dove的(@dove)响应更新为C# 9语法:
sbdsn5lh8#
MinLength属性认为如果值为null则有效。因此,只需将模型中的属性初始化为一个空数组,它就可以工作。