Construção de encadernação do MVC ViewModel vs. achatamento

No meu ViewModel (também no meu modelo de domínio), tenho uma estrutura de propriedades dinâmica, na qual os elementos do perfil são uma lista da classe baseProfileVM e consulte um ProfileDefinitionElement (apenas para explicar o ViewModel sem colar a coisa toda).

    public class OwnProfileVM
{
    public OwnProfileVM() {}
    public ProfileDefinitionVM ProfileDefinitionVM { get; set; }
    public ProfileVM ProfileVM { get; set; }
}

Então, vinculo minhas propriedades usando uma instrução Linq Single:

 @Model.ProfileDefinitionVM.ProfileElementDefinitions.Single(p => p.Key == ProfileElementKey.CompanyName.ToString()).Title

Isso funciona para mostrar dados. Mas ao postar de volta assim:

@Html.TextBoxFor(model => ((ProfileElementTextVM)model.ProfileVM.ProfileElements
            .Single(p=> p.ProfileElementDefinition.Key == ProfileElementKey.CompanyName.ToString()))
            .Text

..as propriedades do modelo são nulas. Isso ocorre por causa do construtor sem parâmetros que cria oOwnProfileVM objeto sem nenhuma propriedade preenchida.

Após algumas pesquisas, descobri que existem duas maneiras de resolver isso:

"Achate" o ViewModel. Então, eu teria uma propriedade fixa para cada elemento do perfil. Isso funcionaria, mas a desvantagem seria que eu não conseguia mapear os dados com o Automapper. Eu teria que preencher o ViewModel para o modelo "manualmente". Isso resultaria em mais código no controlador e em um ViewModel "maior", mas mais simples. Visto emEste artigoEncontre uma maneira de passar os dados de definição para o ViewModel Constructor para criar a lista de propriedades antes de publicar novamente.

Agora minhas perguntas:

A segunda maneira é possível e, se sim, como isso seria feito? Eu não encontrei uma maneira de fazer isso.Se a primeira pergunta puder ser respondida com sim, de que maneira você prefere?

questionAnswers(1)

yourAnswerToTheQuestion