C#在List <string>上设置数据注释

Nik*_*kos 3 c# validation annotations list

我有这段代码:

[Required]
public List<string> myStringList { get; set; }
Run Code Online (Sandbox Code Playgroud)

不幸的是,它不起作用,验证器完全忽略了它。

此外,这很好用:

[Required]
public string myString { get; set; }
Run Code Online (Sandbox Code Playgroud)

和DateTimes也可以正常工作。显然,问题不在于我的验证器,而在于注释。所以问题是,我应该如何在列表上设置数据注释?

DGi*_*bbs 6

创建您自己的数据注释属性,例如:

public class ListHasElements : ValidationAttribute
{
   public override bool IsValid(List mylist)
   {
      if(mylist == null)
         return false;

      return mylist.Any();   
   }
}
Run Code Online (Sandbox Code Playgroud)

然后像这样使用它:

[ListHasElements(ErrorMessage = "List must contain an element")]
public List<string> myStringList { get; set; }
Run Code Online (Sandbox Code Playgroud)