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

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

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

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

有帮助吗?

解决方案

(未知)是正确的。创建两个项目,一个类库和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项目中应该包含CONFIGS,意见等,并参考您的类库

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

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

其他提示

创建责任的每一层单独的类库项目,编译以创建组件,然后引用的每个应用程序中的适当

是的,如果您使用受支持的其中之一 依赖注入 容器,那么它们的配置数据通常不仅指定要响应特定查询而加载的类,还指定从中加载它的程序集。这允许您将类拆分到任意程序集中,并且 MVC 仍然能够找到它们。

当然,Unknown(Google)提供的更简单的答案也可以!

我意识到,这是一个非常古老的问题,但我已经写了关于如何你问究竟什么

的文章

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

只有在完成@大卫的回答是:

如果您的项目由NuGet管理,创建类的库后,执行您的packages.config文件的副本给类库根。之后,你应该修改每个packages.config文件添加或删除软件包,根据每个类库的需求。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top