Ver modelos Asp.Net MVC
-
22-07-2019 - |
Pergunta
Ao usar MVC e convertendo seus dados em ViewModels que é a maneira aceitável de fazer isso?
No momento eu estou usando AutoMapper para fazer isso e seu trabalho bem. No entanto, eu vi em um artigo de blog (eu acho que foi Rob C) ter um construtor na ViewModel que leva o número de parâmetros necessários e, em seguida, gera o ViewModel
Por exemplo var RetViewModel = new ViewModel(MyObject);
Esta parece ser uma forma decente de fazê-lo, pensamentos?
Solução
A "forma aceitável" é geralmente a maneira que funciona melhor para você.
Eu nunca ouvi falar de AutoMapper e quando eu olhei para ele, que eu consegui foi que ele cria mapeamento objeto mágico, seguindo uma determinada convenção.
Screencast em: http://www.dnrtv.com/default.aspx? showNum = 155
Nota:. Eu só assisti cerca de metade desse screencast, então meus pensamentos sobre AutoMapper são um pouco incompleta ??p>
Eu, pessoalmente, não quero usá-lo porque ele exige que eu escrever código extra para mapear / "achatar" entre as propriedades de objetos (código, IMO, melhor deixar na lógica construtor). No exemplo screencast, esse código é geralmente colocado nos métodos de um controlador que pode levar à formação de gases de acção. (I como controladores magro / acções)
Eu uso o método que você deu no seu post, tendo o construtor do modelo de tomar um objeto e fazer todo o trabalho.
Além disso, eu sempre criar um construtor vazio que não tem parâmetros para que eu possa definir manualmente os valores de propriedade do objeto ViewModel.
Exemplo:
CustomViewModel myModle = new CustomViewModle
{
Property1 = "Something",
Property2 = 3,
//etc..
};
Para resumir, tente em ambos os sentidos e ver o que funciona para você. AutoMapper é uma ótima idéia e eu posso vê-lo ajudando em muitas situações, no entanto, eu acho que em alguns pontos quando você usá-lo você estará escrevendo tanto código de usá-lo se você fosse usar construtores de objetos.
Outras dicas
Bem, a abordagem "oficialmente recomendado" é permitir que o mecanismo de ligação modelo lidar com isso para você. Isso é mais simples e automatiza o processo. O modelo terá para expor suas propriedades para ser de leitura e escrita para a pasta para ser capaz de inicializar-lo.
A segunda opção que você está falando vai levar benefícios de fazer seus modelos de objetos imutáveis. Ou seja, você faz todas as propriedades somente leitura e inicializar-los uma vez através de parâmetros do construtor. Isso vai exigir que você olhar para FormCollection diretamente para retirar os valores apresentados. Isso é mais trabalho, mas tem suas próprias vantagens como sendo um tipo de programação defensiva.
Eu não posso dizer qual caminho é melhor, ambos são opções. Eu pessoalmente prefiro o segundo estilo para agora.