MVC 3 ModelState.IsValid с несколькими ViewModels - PullRequest
6 голосов
/ 06 апреля 2011

Скажем так, у меня есть ViewModel, которая состоит из 3 других ViewModel. Один содержит список элементов, другой - экземпляр класса с атрибутом [Required], а затем - другой список других элементов.

Если пользователь выбирает один из элементов в любом из двух списков, я не хочу, чтобы атрибут [Обязательный] во 2-м объекте приводил к недействительности ModelState, потому что если пользователь выбирает один из этих элементов, которые он не нужно будет заполнять форму с элементом с атрибутом [Required].

Как я могу решить эту проблему?

1 Ответ

5 голосов
/ 08 апреля 2011

Один из вариантов - удалить «оскорбительную» проверку с помощью ModelState.Remove («KeyName»). У меня точно такой же сценарий, и я реализовал следующее:

var MyModel = _someService.GetModelById(id);
TryUpdateModel(MyModel);
ModelState.Remove("MyModel.OffendingField");
if (ModelState.IsValid)
{
    ...
}

Важно, однако, убедиться, что это не будет иметь эффект "зацепки" в других областях вашего кода.

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