2010-01-31 65 views
1

我在ASP.NET Web的根文件夾中有一個PlannerShiftView用戶控件網站。在我的App_Code文件夾中,我有一個需要實例化PlannerShiftView(用於GridView中的TemplateField)的ShiftViewTemplate類。問題是,以下代碼無法編譯,因爲PlannerShiftView類型在我認爲是App_Code的「幻像名稱空間」中不可用。CodeBehind類App_Code文件夾中的代碼無法訪問

請有人解釋一下這裏發生了什麼,以及該怎麼做。我知道我可以將ShiftViewTemplate移出App_Code,違背慣例並且沒有解釋,但這是一個空洞的勝利。

回答

2

ASP.Net網站不編譯成單個程序集,而是編譯成幾個程序集。因此,您的用戶控件的代碼不能由App_Code程序集引用。

我解決了類似的情況下的方式:

  • 聲明在App_Code文件的IPlannerShiftView接口或外部組件

  • 聲明PlannerShiftView控制作爲實現IPlannerShiftView接口

  • 實例化使用Page.LoadControl進行控制,並投射到接口

+0

好主意,但有點工作。可惜我們必須這樣做。現在,我只是將ShiftViewTemplate從App_Code中取出。畢竟它是UI代碼。 – ProfK 2010-01-31 08:20:40