将Web用户控件移动到其他名称空间

时间:2009-09-10 21:52:15

标签: asp.net controls namespaces

我们的Web应用程序有一个控件,它设置了标记,代码隐藏和设计器文件,如下所示:

标记

<%@ Control Language="VB" AutoEventWireup="false"
    Inherits="NewNameSpace.Controls.generic_selector" Codebehind="generic-selector.ascx.vb" %>

出于某种原因,虽然它在默认命名空间之前有效,但当我们将它移动到新的命名空间时,我们现在得到一个解析器错误:

  

描述:期间发生错误   解析所需的资源   服务这个请求。请查阅   以下特定的解析错误   详细信息并修改您的源文件   适当。

     

分析程序错误消息:无法加载   类型   'NewNameSpace.Controls.generic_selector'。

附录:我确实将标记,代码隐藏和设计器文件移动到新的命名空间。似乎没有帮助。

项目仍然正确构建。我们需要做些什么吗?


更新

本周再看一下,这是我的猜测。默认情况下创建控件时,它会进入Global.NameOfProject.NameOfControl。

也许新控件现在在Global.NameOfProject.NewNameSpace.Controls?


更新

该控件似乎部分进入名称空间Global.NameOfProject.NewNameSpace.Controls。问题是,如何将整个类移动到新的命名空间并不清楚。我已经尝试了各种标记更改,但它们似乎都没有 - 只有默认命名空间似乎没有打嗝。

所以我的问题仍然存在:如何将Web用户控件移动到不同的命名空间?

2 个答案:

答案 0 :(得分:3)

您还需要更改代码隐藏类的命名空间。

打开generic-selector.ascx.vb文件并确保generic-selector类型包含在属性命名空间中,如下所示:

Namespace NewNameSpace.Controls
    Class generic-selector

    End Class
End Namspace

答案 1 :(得分:2)

我遇到了同样的问题我和你一样,我已经将我的代码文件包含在正常情况下但是在阅读了这篇博客后aspnet-context-is-not-member-of-user.html并通过intellisense更改了我的代码文件并且它有效。它似乎需要相对路径

  

创建自定义用户控件时,您可能会遇到一条错误,指出“Context不是ControlName的成员”。出现这种情况的原因有很多。我见过的最常见的是:

     

在Inherits属性中缺少命名空间(如果你没有使用,那么不适用)   缺少CodeFile或CodeFile路径是错误的,您可以使用Intellisense浏览文件以确保正确的路径