2017-08-14 3 views
0

Ich versuche, ein basierend auf einem anderen Feld in einer Liste abgelegt zu validierenBenutzerdefinierte Validierung auf Liste der Objekt MVC

public class CustomerModel 
    {  
      public List<CustomerBrand> Brands { get; set; } 

    } 
    } 
    public class CustomerBrand 
    {    
     public int Priority { get; set; } 
     public bool Checked { get; set; } 
    } 

Per unten, wenn ein Kontrollkästchen aktiviert ist, dann wird der Wert in das Textfeld eingegeben muss größer sein als null. Kann jemand mit einer Lösung helfen, die diese Validierung des Modells und aus dem Controller

enter image description here

ich gemacht habe, funktioniert diese Methode verwenden möchte aber in der Lage sein, um anzuzeigen, die betreffende Zeile hält.

public class CustomerModel : IValidatableObject 
    { 
     public string Name { get; set; } 

     public List<CustomerBrand> Brands { get; set; } 

     public IEnumerable<ValidationResult> Validate(ValidationContext validationContext) 
     { 
      foreach(var brand in Brands) 
      { 
       if(brand.Checked) 
       { 
        if(brand.Priority < 1) 
        { 
         yield return new ValidationResult("Priority must be greater than 1"); 
        } 
       } 
      } 
     } 
    } 
+1

Mögliches Duplikat von [Attribut abhängig von einem anderen Feld] (https://stackoverflow.com/questions/3713281/attribute-dependent-on-another-field) – Marco

Antwort

0

Wie wäre es etwa so:

int x = 1; 
foreach(var brand in Brands) 
{ 
    if(brand.Checked) 
    { 
     if(brand.Priority < 1) 
     { 
      yield return new ValidationResult("Item " + x.ToString() + " - Priority must be greater than 1"); 
     } 
    } 
    x++; 
} 

Wenn Sie eine Möglichkeit haben, um Elemente durch etwas anderes als Position in der Liste zu verweisen, könnten Sie, dass anstelle von x verwenden.

Verwandte Themen