Estratégia de Plugin para o site MVC 5

5

Estou trabalhando na configuração de um site multilocatário, onde os usuários podem selecionar um tema. Cada um desses temas tem configurações diferentes, então gostaria que alguém escolhesse um tema e, quando editasse as configurações do site, ele criaria um formulário para permitir isso. Tenho certeza que poderia fazer isso através de dados de codificação, mas parece que seria melhor usar plugins para permitir que novos plugins de tema fossem adicionados e remover a necessidade de strings mágicas ou ter que criar uma página de configurações dinâmicas que leia o que campos para exibir de um banco de dados. Há muita documentação sobre coisas como o MEF, mas eu preciso de ajuda para descobrir como exibir uma exibição exclusiva para cada tema e, em seguida, armazenar os resultados. Qualquer ajuda ou direção seria apreciada.

    
por Wade73 30.11.2016 / 20:44
fonte

1 resposta

1

Você não precisa de material MEF ou plugabble. Usar o contêiner IoC será o suficiente para o MVC5 Eu usei o Castelo de Windsor com grande sucesso e ultimamente também o Autofac.

Então você tem todos os seus controladores feitos por fábrica e você pode ter serviço para selecionar o layout no seu controlador. Com este serviço você consulta banco de dados para configurações do usuário e define seu modelo / viewbag com informações necessárias. Eu fiz algo parecido com o lançamento silencioso, onde apenas os usuários do piloto tinham novo visual e novos recursos, também conhecidos como switch de recurso.

Além disso, você pode alternar seu layout usando "_ViewStart.cshtml"

The _ViewStart file can be used to define common view code that you want to execute at the start of each View’s rendering. For example, we could write code within our _ViewStart.cshtml file to programmatically set the Layout property for each View to be the SiteLayout.cshtml file by default.

link

link

Por fim, você também pode fazê-lo com uma classe estática que tenha configuração do banco de dados, mas você terá que fazer muitos ifs.

    
por 30.11.2016 / 21:54
fonte