Архитектура MVC - повторное использование одной и той же модели представления для чтения и редактирования
Скажем, у нас есть следующий (слишком простой) сценарий:
У нас есть экран для просмотра сведений о человеке и экран для редактирования сведений о человеке.
Информация о персонале на экране имеет следующие поля (только для отображения):
Имя Фамилия Био
На экране редактирования сведений о человеке отображаются следующие поля (в элементах управления вводом):
ID (скрыто) Имя Фамилия Био
Скажем, наша модель просмотра выглядит так:
public class DisplayPersonViewModel
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string Bio { get; set; }
}
И наша модель редактирования выглядит так:
public class EditPersonViewModel
{
[Required]
public int ID { get; set; }
[Required]
[StringLength(20)]
public string FirstName { get; set; }
[Required]
[StringLength(20)]
public string LastName { get; set; }
[Required]
public string Bio { get; set; }
}
Не большая разница между 2, а? Модель редактирования имеет одно дополнительное поле (ID) и некоторые атрибуты в свойствах. Теперь, если бы мы объединили 2, как это:
public class DisplayPersonViewModel
{
[Required]
[StringLength(20)]
public string FirstName { get; set; }
[Required]
[StringLength(20)]
public string LastName { get; set; }
[Required]
public string Bio { get; set; }
}
public class EditPersonViewModel : DisplayPersonViewModel
{
[Required]
public int ID { get; set; }
}
Это, безусловно, более СУХОЙ, так как у нас нет дублирующих полей для обслуживания, но теперь у нас есть посторонняя информация (атрибуты) в нашей модели отображения. Я все больше склоняюсь ко второму подходу, потому что на некоторых наших экранах более 25 полей! (... и это вне моего контроля, поэтому, пожалуйста, не говорите об этом :) ...) Тем не менее, я просто хочу услышать мнения, чтобы лучше понять, что может быть "наилучшей практикой".