为什么在VS解决方案资源管理器的"添加ASP.NET文件夹"子菜单中不能选择App_Code?我意识到你可以通过重命名一个新文件夹手动创建一个,但这里的理性是什么?这不是您应该放置"实用程序"或"服务层"类型类的地方吗?
在MVC项目方面注意.我确实喜欢这样一个事实:与默认的ASP.NET Web窗体项目不同,它有一个开箱即用的System.Configuration引用.
这可能是因为ASP.NET MVC项目是Web应用程序而不是Web站点.在网站中,类文件在运行时动态编译,并且必须位于App_Code文件夹中.在Web应用程序中,所有内容都是静态编译的,类文件可以存在于Web应用程序的任何位置.
正如David Brown指出的那样,通常建议将额外的类定义放在单独的类库中,然后从Web应用程序中引用它.如果您编写单元测试或从配置文件引用您的类,如果仅在Web应用程序中定义这些类,则访问这些类可能具有挑战性或不可能.
通常,我将"服务层"和"实用程序"类放在一个单独的项目中,并将其添加为对我的Web应用程序的引用.使用MVC框架,我真的不需要在运行时编译类.
真正的答案是因为微软希望你购买你需要VS来做MVC.但是,将项目转换为纯JIT,这更容易使用...
你可以很直接地做到这一点.
(1)将包含类文件的所有文件夹移动到App_Code
(将Views文件夹保留在原处)
(2)Global.asax
不需要后面的代码或通过删除这些属性继承引用然后放置
[script runat="server"] ... place contents of code behind's class inner code [/script]
并删除背后的代码
(3)在Bin
删除项目DLL引用中,确保在运行MVC时保留其他必要的DLL
(4)删除解决方案文件和属性文件夹和obj文件夹
我经常为nop MVC做这个,因为它更容易使用JIT上的Web层.不理解这一点的开发人员每天都在许多网站上工作,需要各种自定义快速修复.我们工作的网站每天都会获得数十万次点击,所以使用JIT在初始碰撞后没有性能损失.
在较小的网站开发方面,似乎更少.