У меня есть такой класс 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, который позволяет пользователю редактировать отдельные экземпляры клиентов).