2013-03-13 38 views
-1

我有困难的时候让其他类此代码工作声明在.aspx页

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类成为Admin.Web.Booking命名空间的Book类的一部分。 Admin.Base.AdminBase扩展System.UI.Page。

+1

你怎么能在类内编写类? – 2013-03-13 13:19:40

+1

@ebramtharwat真的ebram? – mko 2013-03-13 13:20:25

+1

@ebramtharwat他们被称为'嵌套类'。 – 2013-03-13 13:20:30

回答

0

我建议的第一件事是使类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 {} 
} 

不要使用嵌套类拆分代码,我真的可以看到,成为一个痛苦的经历给你。

好的根据下面的评论,我的首选项将是多个命名空间,而不是一个嵌套类。

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

+0

Admin.Base.AdminBase已经扩展了System.Web.UI.Page。不太清楚为什么你认为这会让mantain变得复杂? – mko 2013-03-13 13:32:05

+0

您提供的解决方案是一个很好的解决方案,目前我正在使用这个解决方案。但问题是要么扩大命名空间(!)的数量,要么使用嵌套类 – mko 2013-03-13 13:35:27