rquitetura @MVC - reutilização do mesmo modelo de visualização para leituras e edições
Diga que temos o seguinte cenário (excessivamente simples):
Temos uma tela para visualizar os detalhes da pessoa e uma tela para editar os detalhes da pesso
Os detalhes da pessoa que exibe a tela possuem os seguintes campos (apenas como exibição):
Primeiro nome Sobrenome Bio
A tela editar detalhes da pessoa mostra os seguintes campos (nos controles de entrada):
ID (oculto) Nome Sobrenome Bio
Diga que o nosso modelo de exibição é assim:
public class DisplayPersonViewModel
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string Bio { get; set; }
}
E o nosso modelo de visualização de edição é assim:
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; }
}
Não há muita diferença entre os 2, eh? O modelo de edição possui um campo extra (ID) e alguns dos atributos nas propriedades. Agora, se combinarmos os 2 assim:
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; }
}
Isso certamente é mais SECO, pois não temos campos duplicados para manter, mas agora temos informações estranhas (atributos) em nosso modelo de exibição. Estou me inclinando mais para a segunda abordagem, independentemente, porque algumas de nossas telas têm mais de 25 campos! (... e isso está fora de meu controle, por favor, não se preocupe com isso :) ...) No entanto, eu só quero ouvir opiniões para ter uma noção melhor do que pode ser a "melhor prática".