0

我有一个小型网络应用程序。

这就是我想要做的:创建部分类来拆分文件背后的代码。为什么我不能直接创建部分类?

如果这是代码隐藏文件:

using System;
using System.Configuration....


public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        Test();
    }
}

并创建这个类:

public partial class _Default
{
    public void Test()
    {
    }
}

我收到一条错误消息,当前上下文中不存在测试。

为什么是这样?

如果我创建几个从 System.Web.UI.Page 继承的部分类,然后从这个类继承我的代码隐藏文件(部分类的结果),我可以让一切正常工作。这是唯一的方法吗?

代码隐藏和aspx页面被动态编译成一个类有什么关系吗?

如果有人能回答我的问题,将不胜感激。事情现在正在解决,但我更愿意在与代码隐藏相同的“级别”上创建部分类,并避免使用继承。

谢谢/约翰

(请注意,我在两个类前面都有下划线,但在预览中只有一个可见,我不知道为什么..)

4

4 回答 4

1

1)将您的部分类放在 app_code 目录中(我从未尝试过)
2)将您的应用程序从网站项目转换为 Web 应用程序项目

WAP 更像是一个 dll 或 winforms 项目,它在运行前编译(尽管 ui 可以更新)并将类放在命名空间中。网站项目是使用 aspnet_compiler 编译的,它的运行方式(例如,动态命名的程序集)与标准编译器不同。

于 2009-04-05T17:28:13.720 回答
0

如果它们不起作用,它们应该在同一个命名空间上。

最好的祝福!

于 2009-04-05T17:11:51.500 回答
0

好的。好吧,这不是名称空间问题,但感谢您的建议。

当我创建一个 Web 应用程序而不是一个网站时,一切正常,非常感谢。

默认情况下,当我开始新项目时,我总是选择创建新网站,我以前从未遇到过任何问题。

所以我当然要问除了上面提到的有什么区别吗?

总是使用 Web 应用程序项目而不是网站项目会有什么缺点吗?

谢谢/约翰

于 2009-04-05T17:44:37.737 回答
0

答案位于 default.aspx 第一行:

Language="C#" CodeBehind="Default.aspx.cs" ...

将设置每个部分类工作。

反而,

Language="C#" CodeFile="Default.aspx.cs" ...

会导致偏类出错。

但是,在 vs2017 old-style-webForm 中只能使用 CodeFile,所以你必须尝试另一种方式:创建一个文件 ..\WebF8\App_Code\Class3.cs,内容为:

     public static class Class3 {
            public static int gg3=33;
     }

那么你就可以在 default.aspx.cs 中正确看到 Class3.gg3 了。注意,这个 Class3.cs 文件必须在 \App_Code 文件夹中。

于 2022-03-01T05:29:21.620 回答