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?

Foi útil?

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

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top