Моя рекомендация в основном состоит в том, что вы не хотите: создавать новые классы моделей, но использовать наследование, чтобы избежать повторения требуемых свойств.Если вы категорически против создания отдельных моделей, вы можете изучить реализацию IValidatableObject
и попросить его проверить другие свойства, прежде чем проверять свойства, которые вы хотите изменить.
РЕДАКТИРОВАТЬ : Я не понимаюНе согласен с ответом Тулипера, но чтобы конкретизировать мои предложения, рассмотрим сценарий, в котором вы хотите сохранить данные пользователя.Из одной формы вы создаете пользователя;с другой стороны, вы просто обновляете (это немного натянуто, но для иллюстрации).Форма «создать» может потребовать имя человека, ссылающегося на пользователя, а форма «обновление» - нет.
Используя наследование, вы можете сделать следующее:
public class SaveUserModel
{
public int? UserId { get; set; }
...
}
public class CreateUserModel : SaveUserModel
{
[Required]
public string ReferredByName { get; set; }
}
Используя IValidatableObject
, вы можете сделать это следующим образом:
public class SaveUserModel : IValidatableObject
{
public int? UserId { get; set; }
public string ReferredByName { get; set; }
...
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
// if UserId is null, we are creating a user vs. updating
if (UserId != null && string.IsNullOrWhiteSpace(ReferredBySiteUrl))
yield return new ValidationResult("Please specify the name of the person who referred you.", new[] { "ReferredByName" });
}
}
Повторюсь, яне пытаясь подтолкнуть мой ответ.Я был бы склонен повторно использовать модели, если они совершенно одинаковы в разных представлениях, но в целом достаточно различий, чтобы оправдать создание отдельных моделей.В конце концов, любой предполагаемый технический долг, уменьшенный благодаря соблюдению режима «СУХОЙ» в этой ситуации, будет чем-то вроде промывки;Модели, как правило, просты в обслуживании.