Pergunta

Eu criei um OrderFormViewModel que se parece com algo

public class OrderFormViewModel 
{
    public IOrderDetails { get; set; }
    public IDeliveryDetails { get; set; }
    public IPaymentDetails { get; set; }
    // ... etc

    public SelectList DropDownOptions { get; set; }
    // ... etc

}

Isso vai para o meu Criar visualização, onde cada seção (ou seja,detalhes de entrega, detalhes de pagamento...etc) é então passado para uma visão parcial que captura os campos necessários.

Achei tudo muito legal até executá-lo e perceber, é claro, que o model binder MVC não sabe como instanciar nenhuma das interfaces.

Existe uma maneira de resolver isso de alguma forma?

Também estou tentando aprender DI usando o contêiner Unity, por isso estou tentando evitar referências a quaisquer classes concretas em meu projeto de UI (o modelo está em um projeto separado).

Foi útil?

Solução

Uma solução é criar um fichário de modelo personalizado, mas esse caminho significa que você precisará se esforçar para traduzir elementos do formulário em propriedades do seu objeto.No entanto, você tem controle total sobre qual implementação de IOrderDetails é usada, por exemplo, ou pode fazer com que seu DI forneça o tipo concreto correto usando sua configuração.

Outras dicas

Uma possível solução pode estar aqui (em Interface Binding Filter vs View Model Binding):http://codetunnel.com/aspnet-mvc-model-binding-security/

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