Como separar modelo, vista e controlador numa aplicação ASP.NET MVC em diferentes conjuntos

StackOverflow https://stackoverflow.com/questions/910089

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

?
Foi útil?

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

http: / /dotnetslackers.com/articles/aspnet/storing-asp-net-mvc-controllers-views-in-separate-assemblies.aspx

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.

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