17

在 ASP.NET Webform 中,App_Code是放置代码并在运行时使用它的标准文件夹。但我认为这个文件夹在 ASP.NET MVC 中有点不同,我的问题是:

  • 我应该将我的代码(扩展方法、助手、...)放在 ASP.NET MVC 的什么位置。当我将代码存储在App_Code文件夹中时,我无法在其中使用主题,controller但它们在views.

  • 关于实体框架,同样的问题,我应该把edmxtt文件放在哪里。我没有使用代码优先

更新:

经过一番搜索,最后我在我的解决方案中创建了一个新的类库项目,代码在所有controllersviews. 我仍然不知道为什么App_Code控制器中的代码不可用

4

6 回答 6

36

我遇到了同样的问题,我的 MVC 项目中无法识别我的类 Utility.cs。我将构建操作“内容”更改为“编译”,这解决了我的问题。希望有帮助。

于 2013-06-20T10:16:17.160 回答
12

App_Code 在网站项目中是必需的,因为它具有特殊的含义。这意味着“不要将这些文件提供给网络浏览器”。在 ASP.NET MVC 中,大多数情况下文件并不直接提供给浏览器,因此不需要 App_Code。您可以将代码文件放在任何您想要的文件夹中,因为这些文件被编译成 DLL,通常不会发布到网站本身。

使用独立库也是一个很好的解决方案。

于 2012-05-16T18:07:53.290 回答
3

没有人真正解释为什么 App_Code 首先存在。这是您放置代码文件以获取动态编译的地方(在运行时)。这就是 App_Code 的第一大原因,也是它特别的原因。您可以将代码放在您想要的任何文件夹中,但您必须在 App_Code 中使用 Compile 操作对其进行编译,这不是必需的,事实上,App_Code 中的大多数文件甚至都不是项目的一部分。

它也适用于 ASP.NET MVC 项目,您只需使用 .cshtml 扩展名命名您的代码文件。

于 2015-03-27T07:57:58.317 回答
2

我建议从本教程开始。它首先使用 EF 代码,但如果您愿意,您可以先DbContext用普通的 edmx替换代码ObjectContext(提示:模型文件夹)。

App_Code特定于网站项目。IMO,除了最简单的网站之外,它是一种组织所有网站的糟糕方式。MVC 项目是一个Web 应用程序项目,因此没有App_Code,您的类几乎可以在任何地方定义。

于 2012-05-16T15:06:03.873 回答
0

好吧,尝试下载一些已经存在的开源项目。其中一个相当复杂,但如果你能理解它就非常酷 -果园

最佳实践是将此逻辑移至 DAL(数据访问层)或 BLL(业务逻辑层)。取决于您的应用程序的复杂性。

于 2012-05-16T15:05:55.163 回答
0

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

于 2014-11-24T17:14:29.927 回答