【问题标题】:Designer page is prepending Global to custom controls definition namespace设计器页面将全局添加到自定义控件定义命名空间
【发布时间】:2017-01-26 17:23:24
【问题描述】:

我的 App_Code 文件夹中定义了一个自定义控件。当我将它添加到页面时,我收到错误Type 'Global.XXX.xxx.MyControl' is not defined

类:

Namespace XXX.xxx
    Public Class MyControl
        Inherits TextBox
        ...code...
    End Class
End Namespace

页面使用情况:

<%@ Register TagPrefix="xxx" Namespace="XXX.xxx" %>
...
<xxx:MyControl runat="server" id="StartTime" />

设计师:

Protected WithEvents StartTime As Global.XXX.xxx.MyControl

因此,Global 被添加到设计器文件中的命名空间之前。出于某种原因,IDE 认为我的自定义控件存在于全局命名空间中,但据我在搜索对象浏览器中看到的,事实并非如此。手动进入并从设计器文件中删除前面的Global 允许我成功构建页面、查看它并测试我的控件的功能,但这远非理想的解决方案,因为每次您都会重新生成设计器文件对相应的页面进行更改。

关于它为什么认为我位于 App_Code 文件夹中的自定义控件位于全局命名空间中的任何想法?有什么比手动修复更好的建议吗?

编辑:也许更好的问题是如何将该命名空间放入全局命名空间,以便在创建设计器文件时正确?

【问题讨论】:

  • 你提到了设计师:我认为你有一个带有 ascx 文件的用户控件吗?只是这个页面msdn.microsoft.com/en-us/library/t990ks23.aspx 说你不能这样做。
  • 不,这是一个定义自定义控件的 VB 文件,位于 App_Code 文件夹中。它不是带有 ascx 文件的用户控件,尽管我也尝试过这条路线但没有成功(不是放在 App_Code 文件夹中,而是放在项目中的正常位置)。
  • 所以当 VB 文件不在 App_Code 中时,您仍然会添加 Global 吗?
  • 以前当它不在 App_Code 中时,我根本无法拉入控件。如果你好奇的话,我一直在尝试的代码在这里。 codeproject.com/articles/12443/asp-net-outlook-like-time-field

标签: asp.net vb.net


【解决方案1】:

Type or namespace could not be found from App_code folder 的问题可能就是你想要的。

要么将你的班级放在不同的文件夹中,要么根据http://vishaljoshi.blogspot.co.uk/2009/07/appcode-folder-doesnt-work-with-web.html更改构建设置

【讨论】:

  • 我已经将我的构建设置设置为编译,因此当我从设计器中生成的代码中删除Global 时它可以正常工作。我已经将它移植到它自己的类文件中(几次不同,无济于事)。我不记得我的其他尝试的具体细节,但我一定是从它们中删除了我的命名空间,因为这一次它工作得很好。谢谢!
猜你喜欢
  • 1970-01-01
  • 2011-05-18
  • 1970-01-01
  • 2015-03-17
  • 2019-10-29
  • 1970-01-01
  • 2014-11-08
  • 1970-01-01
  • 2013-03-23
相关资源
最近更新 更多