【问题标题】:Create partial classes in Asp.Net在 Asp.Net 中创建部分类
【发布时间】:2009-04-05 16:23:30
【问题描述】:

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

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

如果这是代码隐藏文件:

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页面被动态编译成一个类有什么关系吗?

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

谢谢你/约翰

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

【问题讨论】:

  • 您创建的部分类位于哪个命名空间?
  • 您使用的是 Web 应用项目还是网站?

标签: c# asp.net partial-classes


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    它们应该在同一个命名空间中,如果它们不工作的话。

    最好的问候!

    【讨论】:

      【解决方案3】:

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

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

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

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

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

      谢谢你/约翰

      【讨论】:

      【解决方案4】:

      答案位于 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 文件夹中。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-16
        相关资源
        最近更新 更多