我们的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用户控件移动到不同的命名空间?
答案 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浏览文件以确保正确的路径