2012-11-13 28 views
15

I olan aşağıdaki sınıfı: I dizi, en az bir elemana sahip olmalıdır, böylece TaskDescriptions üzerinde bir veri ek açıklaması için istiyorumDizi 1 öğe içermesi gerekir

public class CreateJob 
{ 
    [Required] 
    public int JobTypeId { get; set; } 
    public string RequestedBy { get; set; } 
    public JobTask[] TaskDescriptions { get; set; } 
} 

? [Required] gibi. Mümkün mü?

böyle daha önce bunun için kullanılan özel bir doğrulama özelliği, gördüğüm

cevap

14

:

(Listenin listesiyle örneği verdik ama dizinin adapte edilebileceğini veya kullanabilirsiniz)

public class MustHaveOneElementAttribute : ValidationAttribute 
{ 
    public override bool IsValid(object value) 
    { 
     var list = value as IList; 
     if (list != null) 
     { 
      return list.Count > 0; 
     } 
     return false; 
    } 
} 
[MustHaveOneElementAttribute (ErrorMessage = "At least a task is required")] 
public List<Person> TaskDescriptions { get; private set; } 
25
Bu standart MinLengthAttribute doğrulama özelliğini kullanılarak yapılabilir, ancak diziler için sADECE çalışır edilebilir

: Anlaşılan sadece [4.5+ .net mevcuttur] var

public class CreateJob 
{ 
    [Required] 
    public int JobTypeId { get; set; } 
    public string RequestedBy { get; set; } 
    [MinLength(1)] 
    public JobTask[] TaskDescriptions { get; set; } 
} 
+0

(http://msdn.microsoft.com/en-us/ kütüphane/system.componentmodel.da taannotations.minlengthattribute.minlengthattribute (v = vs.110) .aspx). :-( –

+5

Bu öznitelik hakkında biraz daha fazla bilgi: [MinLength (1)] ile birlikte [Zorunlu] kullanılmalıdır. Çünkü dizi boşsa MinLength tetiklenmez (boş değil, boş). varsayılan istemci tarafı doğrulayıcıları ile desteklenmiyor (yanlışsa beni düzelt) .Bu yalnızca ModelState.IsValid'i tetikleyecektir. – Pluc

+0

Bu öznitelik ayrıca ICollection arabirimini ve dizeleri uygulayan nesneler için de çalışır. –