【发布时间】: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