2010-10-22 37 views
0

comment puis-je appliquer requis attribut comme la validation à ce qui suit, sans savoir combien d'éléments dans chaque collection:Application obligatoire Attribut Valiation sur une collection, IEnumberable

public class MyViewPageViewModel 
{ 
    [Required] 
    public List<int> IntCollection { get; set; } 

    [Required] 
    public Dictionary<int, string> IntAndStringAllValueCollection { get; set; } 

    [Required("Value")] 
    public Dictionary<int, string> IntAndStringValueValidationCollection { get; set; } 

    [Required("Name","HairColor")] 
    public List<Person> PersonNameValidationCollection { get; set; } 

} 

Pour IntCollection Je veux que chaque élément à nécessaire . Pour IntAndStringAllValueCollection, je veux que chaque clé et chaque valeur soient requises. Pour IntAndStringValueValidationCollection, je ne souhaite pas que la clé soit obligatoire, mais je souhaite que la valeur soit requise.

Répondre

0

Bien que je voudrais être en mesure de le faire exprimée ci-dessus, une façon de contourner le problème est comme ceci:

public class PageViewModel 
{ 
    public List<RequiredStartAndEndDateTuple> OnlineDates { get; set; } 
} 

public class RequiredStartAndEndDateTuple 
{ 
    public RequiredStartAndEndDateTuple() { } 
    public RequiredStartAndEndDateTuple(DateTime? startDate, DateTime? endDate) 
    { 
     OnlineStartDate = startDate; 
     OnlineEndDate = endDate; 
    } 

    [Required(ErrorMessage = "Start Date Required")] 
    public DateTime? OnlineStartDate { get; set; } 

    //-- Note, no attribute means end date not required 
    public DateTime? OnlineEndDate { get; set; } 
} 

Et si vous êtes intéressé par le contrôleur & Voir Bits, Départ:

http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx

attraper Plus précisément, le code source du projet et consultez la page « séquentielle » à l'aide des aides fortement typés