2017-01-26 21 views
0

我已经在我的App_Code文件夹中定义了一个定制控件。当我把它添加到页面,我得到的错误Type 'Global.XXX.xxx.MyControl' is not definedDesigner页面正在预先全局定制控件定义命名空间

类:

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文件夹中的任何想法都在Global命名空间中?有什么建议比手动更好的修复?

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

+0

你提到的设计师:我认为你有那么ASCX文件中的用户控件?只是这个页面https://msdn.microsoft.com/en-us/library/t990ks23.aspx说你不能那样做。 –

+0

不,这是一个在App_Code文件夹中定义CustomControl的VB文件。它不是一个带有ascx文件的用户控件,尽管我也尝试过这种方法,但没有成功(不是放在App_Code文件夹中,而是放在项目的正常位置)。 – Crimius

+0

因此,当* VB文件不在App_Code中时,您仍然*获得全局添加? –

回答

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

+0

我已经得到了我的编译设置,因此为什么它能正常工作,当我删除'全球'从在设计器中生成的代码。我已经将它移植到它自己的类文件中(几次不同,无济于事)。我不记得其他尝试的具体情况,但我一定是从他们中删除了我的命名空间,因为这次它工作得很好。谢谢! – Crimius

相关问题