Asp.net mvc 对集合IEnumerable应用所需的属性验证
在不知道每个集合中有多少元素的情况下,如何将必需的属性(如验证)应用于以下内容:Asp.net mvc 对集合IEnumerable应用所需的属性验证,asp.net-mvc,data-annotations,modelstate,model-binding,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; } [Requir
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,我希望每个键和每个值都是必需的。对于InAndStringValueValidationCollection,我不希望需要密钥,但希望需要值。尽管我希望能够按照上面所述进行操作,但解决此问题的一种方法如下:
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; }
}
如果您对控制器和视图位感兴趣,请查看:
特别地,获取项目源代码,并使用强类型助手查看“顺序”页面