如何将ASP.NET MVC应用程序中的模型,视图和控制器分成不同的程序集

时间:2009-05-26 10:54:08

标签: .net asp.net asp.net-mvc .net-assembly

目前我正试图进入ASP.NET MVC框架 对于我的大多数测试应用程序,我使用了一个程序集/项目。这适用于一些较小的应用程序。然后我想知道如何将模型,控制器和视图类放入单独的程序集中?在非常大的Web应用程序中,将所有内容放入单个程序集/项目中是不现实的。

所以我的问题是:是否有可能告诉ASP.NET MVC框架在另一个程序集中搜索视图和/或控制器而不会失去路由引擎的内置灵活性?

5 个答案:

答案 0 :(得分:6)

(未知)是正确的。创建两个项目,一个类库和一个MVC Web项目。 MVC项目应该引用包含文件控制器和代码的类库(全局asax等)。这是一个示例布局。

类库应该只包含.cs文件而没有视图(.aspx / .ascx文件)。

MyProject.BaseSite (class library)
    + Controllers
        - HomeController.cs
        - ... any other controllers
    - default.aspx.cs
    - global.asax.cs

MVC web项目应该包含配置,视图等以及对类库的引用

MyProject.ExampleSite
    + Content
        + scripts
        + css
        + images
    + Views
        + Home
            - index.aspx
            - .. other aspx files
        + Shared
            - Site.master
    - web.config

记住不同的命名空间。然后,您可以创建多个引用相同代码的示例网站。这使您可以完全不同地有效地为您的网站着色。

答案 1 :(得分:2)

为每个职责层创建一个单独的类库项目,编译以创建程序集,然后在适当的时候在应用程序中引用它们。

答案 2 :(得分:1)

是的,如果您使用其中一个受支持的dependency injection容器,那么它们的配置数据通常不仅指定要响应特定查询而加载的类,还指定要从中加载它的程序集。这允许您在任意程序集中拆分类,MVC仍然可以找到它们。

当然,虽然Unknown(谷歌)提供的更简单的答案也可以使用!

答案 3 :(得分:1)

我意识到这是一个非常古老的问题,但我写了一篇关于如何准确提出要求的文章

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

答案 4 :(得分:0)

只完成@ David的答案:

如果您的项目由NuGet管理,则在创建类库后,将packages.config文件的副本执行到类库根目录。之后,您应根据每个类库的需要编辑添加或删除包的每个packages.config文件。