目前我正试图进入ASP.NET MVC框架 对于我的大多数测试应用程序,我使用了一个程序集/项目。这适用于一些较小的应用程序。然后我想知道如何将模型,控制器和视图类放入单独的程序集中?在非常大的Web应用程序中,将所有内容放入单个程序集/项目中是不现实的。
所以我的问题是:是否有可能告诉ASP.NET MVC框架在另一个程序集中搜索视图和/或控制器而不会失去路由引擎的内置灵活性?
答案 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)
我意识到这是一个非常古老的问题,但我写了一篇关于如何准确提出要求的文章
答案 4 :(得分:0)
只完成@ David的答案:
如果您的项目由NuGet
管理,则在创建类库后,将packages.config
文件的副本执行到类库根目录。之后,您应根据每个类库的需要编辑添加或删除包的每个packages.config
文件。