【问题标题】:Applying Required Attribute Validation on a Collection, IEnumerable对集合应用必需的属性验证,IEnumerable
【发布时间】:2010-10-22 17:44:07
【问题描述】:

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

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,我希望每个键和每个值都是必需的。对于 IntAndStringValueValidationCollection,我不希望 Key 是必需的,但我希望 Value 是必需的。

【问题讨论】:

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


    【解决方案1】:

    虽然我希望能够按照上述方式进行操作,但解决问题的一种方法如下:

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

    如果您对控制器和视图位感兴趣,请查看:

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

    具体抓取项目源代码并使用强类型帮助器查看“顺序”页面

    【讨论】:

      猜你喜欢
      • 2020-02-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多