Visual Studio 2015 +所有更新。 Asp .Net Web应用程序(MVC)。
我首先添加一些类库并将Asp .Net WA分成多个层,即DataAccess,Business Logic和Web项目本身。
一旦分开,我就会添加相关的引用,一切都按照我的预期进行(即应用程序的功能与我将其分成多个层之前的功能一样)。
在我的BL中(控制器在这里找到)。我没有选择添加控制器,就像右键单击默认项目中的Controllers文件夹一样,所以添加以下行
<ProjectTypeGuids>{349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
到我的类库的csproj文件,现在出现Add Controller选项。创建一个控制器,但是由于没有web.config文件而抛出一个错误 - 添加这个文件并且所有工作都有效(尽管让这个库在没有web.config文件的情况下工作会很好。)
我遇到的问题是,在创建Controller时,它还会在类库中添加一个View模板,但我的Views文件夹位于我的web项目中。
我做错了吗?是否有解决方法,因此在创建控制器时,它还会将视图创建到正确的项目中?或者另一种方法呢?
答案 0 :(得分:1)
这只是猜测,但您似乎尝试使用基于UI的架构模式来构建业务层。
通常,您的模型,视图和控制器都在主Web应用程序项目中维护。任何支持功能(如BL和DL)都是通过类库添加的。 Visual Studio MVC模板是围绕该概念构建的,这就是您必须手动添加GUID支持的原因 - 以及为什么它会自动创建视图。
如果我可能会问,为什么要尝试在BL中构建控制器?如果您尝试将UI与服务器代码分离,那么WebAPI可能是更好的选择。
更新 - 一些有用的链接
ProDinner - ASP.NET MVC Sample App
N Layered App with Entity Framework, Autofac, ASP.NET MVC and Unit Testing
Architecture Guide: ASP.NET MVC Framework + N-tier + Entity Framework and Many More
答案 1 :(得分:1)
您的大部分问题归结为使用脚手架。当你刚刚开始或非常简单的项目时,脚手架是伟大的,但它很快就会落空。具体来说,通过scaffold添加控制器是为MVC项目设计的,因此它希望找到你在MVC项目中找到的东西。此外,它在Views
中的适当目录中创建了脚手架视图,因为这也是它的目的。
最简单的解决方案就是不使用脚手架。控制器只是一个继承自Controller
的类。没什么特别的。然后,您可以创建要创建它们的视图。