在.aspx页面中声明额外的类

本文关键字:声明 aspx | 更新日期: 2023-09-27 18:03:37

我很难使这段代码工作

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" %>

设计器文件看起来像

namespace Admin.Web.Booking
{
    public partial class Book
    {
        public partial class obj
        {
        }
    }
}

我得到一个错误:解析器错误消息:无法加载类型'Admin.Web.Booking.Book.obj'.

不明白我怎么能使obj类是一个Book类在Admin.Web.Booking命名空间的一部分。Admin.Base.AdminBase扩展System.UI.Page.

在.aspx页面中声明额外的类

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

namespace Admin.Web.Booking
{
    public partial class Book
    {    
        public partial class obj : System.Web.UI.Page
        {
        }
    }
}

,看看会发生什么

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

如果你想组织你的代码,那么我会在你的项目中使用文件夹:

  • 文件夹:预订
  • <
  • 文件夹:订单/gh>
  • 文件夹:票

基本上把你的网站分成不同的域/边界。然后将ASPX页面放入这些文件夹中,例如

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

不要使用嵌套类拆分代码,我真的可以看到这对你来说是一种痛苦的经历。

好,根据下面的评论,我更喜欢多个名称空间,而不是一个嵌套的类。

名称空间在逻辑上将代码划分到相关的区域,例如Admin、Booking、ticket等。如果将代码放置在单独的名称空间中,则更容易导航,可以在解决方案资源管理器中轻松查看这些名称空间。将所有代码放在几个类文件中会导致代码难以遵循,并且随着时间的推移,会降低生产力,增加耦合并变得粘稠。