Аннотации данных для подмножества свойств - PullRequest
1 голос
/ 01 сентября 2010

Я читал аннотации данных (т. Е. сообщение в блоге Скотта Гатри ), и я очень рад, что в одном месте есть логика валидации.

Кто-нибудь был в состоянии успешно использовать эту технику при предложении пользователю ввести подмножество свойств, связанных с данным классом?

Например (псевдокод) ...

public class Person
{
  [Required]
  public string Name

  [Required]
  public string Email
}

Тогда, скажем, у вас есть представление, которое отображает форму только с именем. Значение ModelState.IsValid в контроллере HttpPost для этого представления всегда будет ложным, поскольку Email требуется и отсутствует.

Я думал о том, чтобы иметь отдельные модели, одну для части, которая требует только Имя, и другую для части, которая требует как Имя, так и адрес электронной почты, но тогда я нарушаю принцип СУХОГО, потому что у меня будет проверка имени логика в двух местах.

Есть предложения? Можно ли получить аннотации данных, работающие таким образом? Должен ли я просто иметь два отдельных класса? Может быть CustomValidationAttribute , который проверяет флаг, прежде чем определить, требуется ли Email?

1 Ответ

3 голосов
/ 01 сентября 2010

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

Я бы создал пользовательский атрибут, только если бы эти свойства были в одной форме, а иногда оба требовались, а иногда толькоодин из них был необходим.Если у вас есть отдельные виды, я бы сделал другую модель вида.

...