ASP.NET MVC — проверка сложной модели

У меня есть такой класс ViewModel:

class CaseModel {
    public Boolean     ClientPresent { get; set; }
    public ClientModel Client        { get; set; }
}

class ClientModel {
    [Required]
    public String      FirstName     { get; set; }
    [Required]
    public String      LastName      { get; set; }
}

Страница просмотра состоит из и частичное представление Html.EditorFor( m => m.Client ).

Идея заключается в том, что когда пользователь предоставляет информацию о деле (объект бизнес-домена), он может не указывать никакой информации о клиенте (другом бизнес-объекте), сняв флажок ClientPresent.

Я хочу, чтобы ASP.NET MVC не выполнял никакой проверки дочернего объекта ClientModel, однако свойство CaseModel.Client автоматически заполняется при отправке формы обратно на сервер, но поскольку Имяи LastNameне (обязательно) предоставляется пользователем, это означает, что он не соответствует атрибутам проверки [Required], следовательно, ViewData.ModelState.IsValidвозвращает false, и пользователь получает сообщение об ошибке проверки.

Как сделать так, чтобы CaseModel.Clientне проверялся, если CaseModel.ClientPresentимеет значение false?

Обратите внимание, что ClientModelявляется полностью независимым классом ViewModel и используется в другом месте приложения (например, в классе ClientController, который позволяет пользователю редактировать отдельные экземпляры клиентов).

5
задан Dai 14 June 2012 в 02:40
поделиться