【问题标题】:Moving a Web User Control to a different namespace将 Web 用户控件移动到不同的命名空间
【发布时间】:2010-11-27 08:00:36
【问题描述】:

我们的 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 用户控件移动到不同的命名空间?

【问题讨论】:

    标签: asp.net controls namespaces


    【解决方案1】:

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

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

    Namespace NewNameSpace.Controls
        Class generic-selector
    
        End Class
    End Namspace
    

    【讨论】:

      【解决方案2】:

      我遇到了和你一样的问题,我已经正常地包含了我的代码文件,但是在阅读了这个博客aspnet-context-is-not-member-of-user.html 并通过智能感知更改了我的代码文件之后,它就起作用了。好像需要相对路径

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

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

      【讨论】:

      猜你喜欢
      • 2014-12-13
      • 2017-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-10
      • 1970-01-01
      • 2010-10-23
      相关资源
      最近更新 更多