Это не дублирование.DataType используется для разных целей, а валидация - это другое.Хотя они могут звучать одинаково (специально для EmailAddress), вы не должны рассматривать их как дублирование.Более того, валидация автоматически контролируется для необнуляемых типов - они помечаются как Required
.Datetime также проверяется на действительный формат автоматически.
Что вам определенно не понравится, так это то, что вы можете контролировать, какие свойства вашей доменной модели могут редактировать пользователи, используя BindAttribute , и контролировать разные проверки на одной и той же модели при использовании разных представлений.Так что пользуйтесь ViewModels!Украсьте их всеми атрибутами, необходимыми для вашего веб-приложения, и сопоставьте их с моделями доменов, используя AutoMapper
. Вы также можете проверить FluentValidation