Применение проверки обязательных атрибутов к коллекции, IEnumerable - PullRequest
0 голосов
/ 22 октября 2010

Как я могу применить Обязательный атрибут как подтверждение к следующему, не зная, сколько элементов будет в каждой коллекции:

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 я не хочу, чтобы ключ требовался, но я хочу, чтобы требовалось значение.

1 Ответ

0 голосов
/ 22 октября 2010

Хотя я бы хотел сделать это, как указано выше, один из способов обойти проблему таков:

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

Специально получите исходный код проекта и откройте страницу «Последовательный», используя строго типизированные помощники

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...