Pergunta

E o que você colocar na sua opinião?

A blogue de Scott Hanselman sobre como usar um fichário de modelo especial para o teste mais fácil me levou a pensar sobre o seguinte: O que você colocar na sua lógica do controlador construção do modelo de vista, eo que deve ser colocado no modo de exibição? o que ele faz é esta:

var viewModel = new DinnerFormViewModel {  
    Dinner = dinner,  
    Countries = new SelectList(PhoneValidator.Countries, dinner.Country)  
};  
return View(viewModel);

Agora, eu uso a mesma maneira de passar dados para o meu ponto de vista, mas estou inseguro sobre como ele lida com a propriedade Países. Você poderia argumentar ambos os lados: Envolvendo a lista de países do SelectList prepara os dados para a vista, bem como criar um DTO viewmodel para passar seus dados. Por outro lado, de alguma forma parece que você está manipulando especificamente os dados para ser usado em uma lista suspensa, limitando a forma como as ofertas de vista com os seus dados do controlador. Eu sinto que este é um pouco de uma área cinzenta na separação de interesses entre a visão eo controlador, e eu realmente não posso decidir qual caminho a percorrer. Há algum melhores práticas para isso?

PS: Para mantê-lo simples, vamos supor que o padrão contexto ASP.NET MVC, então basicamente o seu fora do projeto caixa. mecanismo de exibição padrão e tudo o que jazz.

Foi útil?

Solução

Em MVC (pelo menos este sabor dela), uma das responsabilidades do controlador é preparar os dados para a vista. Então eu acho que é perfeitamente aceitável para preparar um modelo específico para o consumo vistas que implica ele será usado em um drop-down. Neste caso, o controlador é apenas tornando mais fácil para a vista e nos impede de fatos código estranho de ter que de outra forma seriam escorrendo para a vista. Ele também mantém um de ter aquelas cordas mágicas na ViewData como VieData [ "Países"].

Assim, para resumir, embora possa parecer que há alguma área cinzenta em termos de responsabilidades, em última análise, que é o trabalho do controlador: para interagir com a vista e para transformar o modelo de domínio em outros modelos que são mais fáceis de consumir pela visão.

Outras dicas

Alguns sugerem que ter um abrangente modelo de visão per view é ideal (apelidado Princípio Thunderdome ).

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