2013-03-13 57 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