繁体   English   中英

在 Asp.Net 中创建部分类

[英]Create partial classes in Asp.Net

我有一个小的 web 应用程序。

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

如果这是代码隐藏文件:

using System;
using System.Configuration....


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

并创建这个 class:

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

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

为什么是这样?

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

与代码隐藏和aspx页面动态编译成class有什么关系吗?

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

谢谢/约翰

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

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

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

答案位于 default.aspx 第一行:

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

将设置每个部分 class 工作。

反而,

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

会导致部分class出错。

但是,在 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 文件夹中。

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

最好的祝福!

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

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

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

因此,我当然要问,除了上述提到的区别之外还有什么区别?

始终使用Web应用程序项目而不是网站项目会不会有任何弊端?

谢谢/约翰

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM