在集合上应用必需的属性验证,IEnumerable

时间:2010-10-22 17:44:07

标签: asp.net-mvc data-annotations modelstate model-binding

如何在不知道每个集合中有多少元素的情况下,如何将必需属性(如验证)应用于以下内容:

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; }

}

对于IntCollection,我希望每个元素都是必需的。对于IntAndStringAllValueCollection,我希望每个Key和每个Value都是必需的。对于IntAndStringValueValidationCollection,我不希望Key是必需的,但我希望需要Value。

1 个答案:

答案 0 :(得分:0)

虽然我希望能够像上面所表达的那样做,但解决问题的一种方法是:

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; }
}

如果您对Controller&amp ;;感兴趣查看比特,请查看:

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

专门获取项目源代码并使用强类型帮助程序

查看“顺序”页面