2010-01-31 80 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