Estou apenas aprendendo asp.net mvc e estou tentando descobrir como mover meus controladores para um projeto separado. Normalmente, quando eu projetei aplicativos da web asp.net antes, criei um projeto para meus modelos, outro para minha lógica e, em seguida, havia a web.
Agora que estou aprendendo o asp.net mvc, esperava seguir um padrão semelhante e colocar os modelos e controladores em seus próprios projetos separados e apenas deixar as visualizações / scripts / css na web. A parte de modelos foi fácil, mas o que eu não entendo é como fazer meus controladores em um projeto separado serem "encontrados". Além disso, gostaria de saber se isso é aconselhável. Obrigado!
fonte
Embora seja razoável criar seu próprio ControllerFactory, achei mais conveniente definir todos os meus controladores em cada projeto, mas derivá-los dos controladores em meu projeto compartilhado:
A vantagem adicional é que você tem um local para colocar a lógica do controlador que difere de projeto para projeto. Além disso, é mais fácil para outros desenvolvedores encontrarem rapidamente a lógica do seu controlador porque os controladores existem no local padrão.
Sobre se isso é aconselhável, acho que sim. Eu criei uma lógica comum de gerenciamento de contas que desejo compartilhar entre projetos que, de outra forma, têm uma lógica de negócios muito diferente. Portanto, estou compartilhando minha conta e os controladores administrativos, mas os outros controladores são específicos para seus respectivos projetos.
fonte
Na classe, adicione o seguinte código (para código do controlador u'r)
}
Na pasta de visualização do projeto mvc, adicione a pasta para Contato e crie um arquivo Call.cshtml.
Adicione a referência do projeto da biblioteca de classes ao seu projeto MVC principal.
fonte
Meu problema foi resolvido depois que atualizei a
System.Web.Mvc
referência do NuGet, para que MvcWebsite e Class Library usem a mesmaSystem.Web.Mvc
versãoNão há necessidade de adicionar namespaces padrão
fonte
A forma mais simples de separação que uso é reter as Visualizações "como estão" no projeto MVC original, mas remover os Controladores. Em seguida, em um novo projeto ClassLibrary, adicione as classes Controller e garanta que sejam herdadas do Controller.
O mecanismo de roteamento MVC será roteado automaticamente para os controladores na ClassLibrary e os controladores construirão automaticamente as visualizações do projeto MVC original, desde que você tenha suas referências e usos corretamente no lugar.
Estou usando essa arquitetura para implementar um módulo de relatórios Html que pode ser compilado e implantado separadamente da solução principal. Finalmente estou livre do SSRS!
fonte