Como separar modelo, vista e controlador numa aplicação ASP.NET MVC em diferentes conjuntos
-
05-09-2019 - |
Pergunta
No momento eu estou tentando entrar no quadro ASP.NET MVC.
Para a maioria das minhas aplicações de teste eu usei um único assembly / projeto. Isso funcionou bem para algumas aplicações menores. Então eu perguntei como eu poderia colocar meu modelo, classes do controlador e vista em conjuntos separados? Em realmente grandes aplicações web não é muito realista para colocar tudo em um único assembly / projeto.
Então, minha pergunta é: É possível dizer o quadro ASP.NET MVC para procurar em outra montagem para vistas e / ou controladores sem perder a flexibilidade integrada do mecanismo de roteamento
?Solução
(desconhecido) está correta. Criar dois projetos, uma biblioteca de classes e um projeto de web MVC. O projeto MVC deve fazer referência a biblioteca de classes que contém os controladores e código por trás de arquivos (asax global, etc). Aqui está um exemplo de layout.
A biblioteca de classes deve conter apenas arquivos .cs e sem vista (aspx / .ascx arquivos).
MyProject.BaseSite (class library) + Controllers - HomeController.cs - ... any other controllers - default.aspx.cs - global.asax.cs
projeto web MVC deve conter configurações, vistas, etc, e uma referência para a biblioteca de classes
MyProject.ExampleSite + Content + scripts + css + images + Views + Home - index.aspx - .. other aspx files + Shared - Site.master - web.config
Lembre-se dos diferentes namespaces. Você pode criar vários sites de exemplo que referenciam o mesmo código. Isso permite que você efetivamente pele o seu site de forma completamente diferente.
Outras dicas
Crie um projeto de biblioteca de classe separada para cada camada de responsabilidade, compilar para criar a montagem e, em seguida, fazer referência a cada em sua aplicação quando necessário.
Sim, se você usar uma das apoiado recipientes de injecção dependência , em seguida, os seus dados de configuração geralmente especificam não apenas a classe a ser carregado, em resposta a uma consulta em particular, mas também a montagem a partir do qual é para ser carregado. Isso permite que você dividir suas classes acima através de assembléias arbitrárias e MVC ainda será capaz de encontrá-los.
Embora, é claro, a resposta mais simples fornecido por Unknown (Google) também funcionará!
Eu percebo que esta é uma pergunta muito velho, mas eu escrevi um artigo sobre como exatamente o que você está pedindo
Apenas completando @ resposta de David:
Se o seu projecto é gerido por NuGet
, depois de criar as bibliotecas de classe, faça uma cópia do seu arquivo packages.config
à raiz bibliotecas de classes. Depois, você deve editar cada arquivo packages.config
adição ou remoção de pacotes, de acordo com as necessidades de cada biblioteca de classes.