目前我正在尝试学习ASP.NET MVC框架。
对于我的大多数测试应用程序,我使用了单个程序集/项目。这对于一些较小的应用程序来说效果很好。但是,我想知道如何将我的模型、控制器和视图类放入不同的程序集中。在非常大的Web应用程序中,将所有内容放入一个单独的程序集/项目中并不现实。
所以我的问题是:是否可以让ASP.NET MVC框架搜索另一个程序集中的视图和/或控制器,而不失去路由引擎内置的灵活性?
目前我正在尝试学习ASP.NET MVC框架。
对于我的大多数测试应用程序,我使用了单个程序集/项目。这对于一些较小的应用程序来说效果很好。但是,我想知道如何将我的模型、控制器和视图类放入不同的程序集中。在非常大的Web应用程序中,将所有内容放入一个单独的程序集/项目中并不现实。
所以我的问题是:是否可以让ASP.NET MVC框架搜索另一个程序集中的视图和/或控制器,而不失去路由引擎内置的灵活性?
(未知)是正确的。创建两个项目,一个类库和一个MVC Web项目。MVC项目应引用包含控制器和代码后台文件(global asax等)的类库。这是一个示例布局。
类库应仅包含.cs文件,而不包含视图(.aspx/.ascx文件)。
MyProject.BaseSite (类库) + 控制器 - HomeController.cs - ... 任何其他控制器 - default.aspx.cs - global.asax.cs
MVC Web项目应包含配置、视图等以及对您的类库的引用
MyProject.ExampleSite + 内容 + 脚本 + CSS + 图片 + 视图 + 主页 - index.aspx - .. 其他aspx文件 + 共享 - Site.master - web.config
请记住不同的命名空间。然后,您可以创建多个引用相同代码的示例网站。这允许您完全不同地定制您的网站外观。
我知道这是一个非常老的问题,但我已经写了一篇文章,介绍了如何做到你所要求的。
是的,如果您使用受支持的依赖注入容器之一,则它们的配置数据通常不仅指定要加载哪个类以响应特定查询,还指定要从哪个程序集中加载它。这使您可以将类分散在任意程序集中,而MVC仍然能够找到它们。
当然,未知(Google)提供的更简单的答案也可以起作用!
仅补充@David的答案:
如果您的项目由NuGet
管理,在创建类库后,将packages.config
文件复制到类库根目录。然后,您应该编辑每个packages.config
文件,根据每个类库的需求添加或删除包。