0

我正在尝试创建出现在我正在处理的项目的 Controller 类中的私有方法的修改公共版本。私有方法返回一个自定义类型的列表,而在公共方法中我想返回一个 int 列表。

因此,我将现有方法从 \Controllers 文件夹中的控制器类复制到了我在 App_Code 文件夹下添加的新 Utils 类中。

但事实证明,要编译代码,我需要添加某些“使用”子句;没问题?

例如,在这行代码中:

get { return int.Parse(CCRCustomer.GetCustomerNumberFromUsername(User.Identity.Name)); }

...“身份”是红色的 - 无法识别。我认为“用户”应该是我们的自定义类;但是当我将鼠标悬停在它上面时,

它说,“模块 System.Data.Entity ...”

然而,将 System.Data.Entity 添加到 using 子句会导致该部分的“实体”部分被涂成红色,因为无法识别。

下一个问题是这一行:

using (var conn = new EntityConnection(ConnectionString))

...在这种情况下,现在轮到“EntityConnection”感到尴尬并变红/无法识别。

具有原始类似代码的控制器类具有以下内容:

using System.Data.EntityClient;

...所以我想也许这就是我所需要的;但是将它添加到我的 Utils 课程只会奖励我更多的红色 - 再次在“实体”上。

为什么从项目的一个部分可以看到引用的类,而从另一个部分看不到?

4

1 回答 1

2

在 web 应用程序项目中,您不需要将代码文件添加到 app_code 文件夹;在项目中创建一个常规的“Utils”文件夹并添加到它。app_code 中的代码文件编译为不同的程序集,这就是为什么您放置在 app_code 下的代码缺少对现有项目(例如 Entity Framework )的引用。

编辑:为了更清楚地说明这一点,默认情况下 ASP.NET Mvc不会为您提供添加 app_code 文件夹的方法。这是因为 app_code 主要存在于动态编译代码文件的网站。Web 应用程序是预编译的,Mvc 仅作为 Visual Studio 中的 Web 应用程序项目提供。尽管如链接的 SO 问题中所述,如果您确实需要,您可以解决此问题。

于 2013-08-16T18:23:00.847 回答