C# 在.aspx页面中声明其他类

C# 在.aspx页面中声明其他类,c#,asp.net,class,C#,Asp.net,Class,我很难让这个代码正常工作 using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace Admin.Web.Booking { public partial class Book { public partial class ob

我很难让这个代码正常工作

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace Admin.Web.Booking
{
    public partial class Book
    {
        public partial class obj : Admin.Base.AdminBase
        {
            protected void Page_Load(object sender, EventArgs e)
            {
                Response.Write("test");
            }
        }
    }
}
页面声明看起来像

<%@ Page Title="" Language="C#" MasterPageFile="~/Master/Admin1.Master" AutoEventWireup="false" CodeBehind="obj.aspx.cs" Inherits="Admin.Web.Booking.Book.obj" %>
我收到一个错误:解析器错误消息:无法加载类型“Admin.Web.Booking.Book.obj”


不明白如何使obj类成为Admin.Web.Booking命名空间中Book类的一部分。Admin.Base.AdminBase扩展了System.UI.Page。

我建议的第一件事是让类
obj
Page
继承

namespace Admin.Web.Booking
{
    public partial class Book
    {    
        public partial class obj : System.Web.UI.Page
        {
        }
    }
}
看看会发生什么

如果这不起作用,那么我认为不应该以这种方式使用嵌套类。我可以很容易地看到,维护起来变得过于复杂,尤其是当项目中添加了更多页面时

如果您想构造代码,那么我将使用项目中的文件夹:

  • 文件夹:预订
  • 文件夹:订单
  • 文件夹:门票
基本上将网站划分为不同的域/边界。然后将ASPX页面放入这些文件夹中,例如

namespace Booking {
    public partial class Booking : Page {}
}

namespace Orders {
    public partial class Orders : Page {}
}
不要使用嵌套类拆分代码,我可以看出这对您来说是一个痛苦的经历

好的,根据下面的评论,我的首选是多个名称空间,而不是嵌套类


名称空间在逻辑上将代码分隔为相关区域,例如管理、预订、票证等。如果将代码放置在单独的名称空间中,则可以更轻松地导航代码,这可以在解决方案资源管理器中轻松查看。将所有代码放在几个类文件中会导致代码更难理解,并且随着时间的推移,会降低生产效率、增加耦合并变得粘稠。

如何在类内编写类???@ebramtharwat real ebram?@ebramtharwat它们被称为
嵌套类
。为什么要这样做?对于我能想到的ASPX页面,代码隐藏文件中不需要嵌套类。@Jason Evans如果我在这个名称空间中有20个页面,我真的很想对一个大类进行排序ADMIN.Base.AdminBase已经扩展了System.Web.UI.page。不太清楚为什么你认为mantain会很复杂?你提供的解决方案很好,这就是我目前正在使用的。但问题是要么乘以名称空间的数量(!),要么使用嵌套类
namespace Booking {
    public partial class Booking : Page {}
}

namespace Orders {
    public partial class Orders : Page {}
}