2009-05-05 114 views
2

所以我在尝试发布网站时遇到问题。 我在visual studio 2008 sp1中。找不到ASP.net用户控件的名称空间名称

我有一堆用户控件,并在几页上用编程方式使用它们。

我有behing我用

ASP.usercontrols_foo newFoo control = (ASP.usercontrols_foo)Page.LoadControl("~/UserControls/Foo.ascx"); 

如果我浏览到它工作正常,页面上的代码aspx页面上的参考

<%@ Reference Control="~/UserControls/Foo.ascx" %> 

然后,但是当我转到发布该网站我得到一个编译时错误。

+0

您的网站是否构建? – Cerebrus 2009-05-05 18:22:09

回答

5

呃,我在这个同样的问题上正在流血的开发时间。有没有人有解决这个问题?

BTW:它建立,如果你取消“允许此预编译站点可更新”(在网站上点击右键,选择属性页,MSBuild的选项)

但我需要的网站是更新。

+0

1+,在过去,我遇到了同样的问题,因为我无法解决它,我用反射。我想知道如何解决这个问题。 – Cleiton 2009-08-24 17:20:15

0

它可能与特定类型不可用有关。你可以改变控制参考,因此类型和演员只使用基本控制类:

Control control = Page.LoadControl("~/UserControls/Foo.ascx"); 
0

是的,我可以将其强制转换为控件。但后来我失去了直接访问usercontrol上的方法。

我知道我可以通过反映到控件中来访问方法,并且我已经成功地完成了这一任务,但这远不是理想的方式来访问网站上的所有其他用户控件。

而且,后续的错误是,它无法找到该用户控件上的标记

<%@ Register src="CategoryRows.ascx" tagname="CategoryRows" tagprefix="abc" %> 
<abc:CategoryRows ID="CategoryRows" runat="server" /> 

需要注意的是,我可以在本地和服务器上成功运行的网站,如果我基本上XCOPY整个网站(源代码和所有)。但发布失败。

+0

Riaz,您是否在发布您的网站时选中了“使用固定命名和单页装配”? – Cleiton 2009-08-24 17:39:29

+0

我试过了“使用固定命名和单页组件”选中并取消选中。 (在这两种情况下都会检查“允许此预编译的站点可更新”) 我得到相同的错误: “名称空间”ASP“中不存在类型或名称空间名称'some_user_control_ascx'(是否缺少程序集引用?)“ – 2009-08-25 08:21:25

2

我有这个相同的问题 - 实际上,在我的情况下,我可以让它编译和构建我的网站,但是在做自动化构建时,它会大放异彩。

尝试更换你的代码如下:

ASP.usercontrols_foo newFoo control = (ASP.usercontrols_foo)Page.LoadControl("~/UserControls/Foo.ascx"); 

USERCONTROLS_Foo newFoo control = (USERCONTROLS_Foo)Page.LoadControl("~/UserControls/Foo.ascx"); 

(资本将根据您如何大写的目录名/控件名称 - 但在这两种情况下应适当突出) 。

0

投射用户控件可能会产生很多问题。我的方法是创建一个类(比如控制类),在投射后放置所需的所有属性和方法,并从System.Web.UI.UserControl继承此类。然后在您的用户cotrol代码文件而不是System.Web.UI.UserControl用户此控件类。

现在只要您需要使用此类的投射。它也将是轻型铸造。

1

我找到了解决方案。如果我将在用户定义的命名空间中声明控件,那么我可以直接使用控件而不使用ASP或将它引用到aspx页面。

0

请检查:

你有任何website.publishproj文件?
如果存在,则删除并重试并发布代码。

相关问题