我在ASP中创建了一个网站。NET,并创建了一个类,并把它放在App_Code文件夹中。然而,我不能从我的其他页面访问这。是否需要配置一些东西来允许这一点?我在以前的项目中已经使它工作,但在这个项目中,不知何故。

namespace CLIck10.App_Code
{
    public static class Glob
    {
        ...
    }
}

当前回答

我想补充一个为什么会发生在我身上的答案,我只是使用了一个新版本的Visual Studio来添加到一个旧的项目中,并使用了“添加Web表单”。我在App_Code中有一个类,由于某种原因,它仅在那组页面上不可访问。我尝试将类更改为“Compile”,突然项目的其余部分抱怨类在多个地方,但它不是(在开始时也有一个数字,如3_Whatever)。

我卸载了项目文件,并手动编辑它,发现即使属性窗口显示“内容”,指令是“编译”。此外,它还没有添加其他所有类型的子类型。最后,aspx页面有“CodeBehind”而不是“CodeFile”,我也做了修改,不确定是否需要,但至少现在看起来和其他页面一样了!

<Content Include="MyFile.aspx.cs">
  <DependentUpon>MyFile.aspx</DependentUpon>
  <SubType>ASPXCodeBehind</SubType>
</Content>

现在一切都正常了。

其他回答

我想补充一个为什么会发生在我身上的答案,我只是使用了一个新版本的Visual Studio来添加到一个旧的项目中,并使用了“添加Web表单”。我在App_Code中有一个类,由于某种原因,它仅在那组页面上不可访问。我尝试将类更改为“Compile”,突然项目的其余部分抱怨类在多个地方,但它不是(在开始时也有一个数字,如3_Whatever)。

我卸载了项目文件,并手动编辑它,发现即使属性窗口显示“内容”,指令是“编译”。此外,它还没有添加其他所有类型的子类型。最后,aspx页面有“CodeBehind”而不是“CodeFile”,我也做了修改,不确定是否需要,但至少现在看起来和其他页面一样了!

<Content Include="MyFile.aspx.cs">
  <DependentUpon>MyFile.aspx</DependentUpon>
  <SubType>ASPXCodeBehind</SubType>
</Content>

现在一切都正常了。

转到要从其中访问App_code类的页面,然后添加App_code类的名称空间。您需要提供一个using语句,如下所示:

using WebApplication3.App_Code;

之后,你需要转到app_code类属性,并将“Build Action”设置为“Compile”。

把它放在你想要访问类的其他文件的顶部:

using CLIck10.App_Code;

或者像这样从其他文件访问类:

CLIck10.App_Code.Glob

不确定这是否是你的问题,但如果你是c#的新手,那么这是一个很容易被绊倒的问题。

更新:我最近发现,如果我在项目中添加了一个App_Code文件夹,那么我必须关闭/重新打开Visual Studio才能正确识别这个“特殊”文件夹。

右键单击App_Code文件夹中的.cs文件并检查其属性。

确保“构建动作”设置为“编译”。

确保使用与页面相同的名称空间