ASP.NET MVC项目和App_Code文件夹

时间:2009-02-01 05:01:29

标签: .net asp.net asp.net-mvc

为什么在VS解决方案资源管理器的“添加ASP.NET文件夹”子菜单中不能选择App_Code?我意识到你可以通过重命名一个新文件夹手动创建一个,但这里的理性是什么?这不是您应该放置“实用程序”或“服务层”类型类的地方吗?

在MVC项目方面注意。我确实喜欢这样一个事实:与默认的ASP.NET Web窗体项目不同,开箱即用的System.Configuration引用。

4 个答案:

答案 0 :(得分:21)

这可能是因为ASP.NET MVC项目是Web应用程序而不是Web站点。在网站中,类文件在运行时动态编译,并且必须位于App_Code文件夹中。在Web应用程序中,所有内容都是静态编译的,类文件可以存在于Web应用程序的任何位置。

正如David Brown指出的那样,通常建议将额外的类定义放在单独的类库中,然后从Web应用程序中引用它。如果您编写单元测试或从配置文件中引用您的类,如果仅在您的Web应用程序中定义这些类,则访问这些类可能具有挑战性或不可能。

答案 1 :(得分:10)

通常,我将“服务层”和“实用程序”类放在一个单独的项目中,并将其添加为我的Web应用程序的引用。使用MVC框架,我真的不需要在运行时编译类。

答案 2 :(得分:10)

真正的答案是因为微软希望你购买你需要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在初始碰撞后没有性能损失。
在较小的网站开发方面,似乎更少。

答案 3 :(得分:0)

对于那些不想要第二个项目/类库并只想要几个c#类的简单文件夹的人,我建议使用“App_Classes”。