我有一个使用Visual Studio 2010和ASP.Net 4.0的Web解决方案。在此解决方案中,有一个网站和一个类库。
我在网站上添加了一个新的用户控件,并且能够构建所有内容。我甚至能够使用新控件发布。当我尝试在代码的不同部分引用该控件的类名时出现问题。当我这样做时,我仍然能够构建/重建整个解决方案。但是当我尝试发布时,我收到错误“无法找到类型或命名空间名称。”
当我们发布时,我们总是取消选中“允许此预编译站点可更新”框,并且我们始终选中“使用固定命名和单页程序集”框。
如果我发布并取消选中“使用固定命名和单页程序集”框,它将发布就好了。但由于某种原因,我不能让它用CHECKED那个盒子发布,这是我需要做的。
我试过了:
清洁解决方案
重新启动Visual Studio
重新启动计算机
清除.net临时文件夹
重新创建控件
将网站中的所有内容放入命名空间
非常感谢任何帮助或见解。
感谢。
编辑:
我明白了。我是动态添加这个新控件。但我没有意识到它也需要在我正在使用它的页面上注册。注册控件后,一切都按预期工作
答案 0 :(得分:1)
当您想要动态使用Web用户控件时,当您使用其他.net控件(如文本框,标签等)时,您需要按照以下步骤操作。
(1)在控制指令中添加ClassName
属性,如下所示(在ascx文件中)
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="CustomControl.ascx.cs"
Inherits="CustomControl" ClassName="CustomControl" %>
注意:确保ClassName
&amp; Inherits
和CS文件中的类名相同。
(2)在您要动态使用Web用户控件的页面上添加Reference
指令
<%@ Reference Control="~/usercontrol/CustomControl.ascx" %>
注意: Reference
指令与Register
指令不同。
(3)现在,您可以在页面的任何位置动态添加用户控件,如下所示
ASP.CustomControl cuCtrl = (ASP.CustomControl)LoadControl("~/usercontrol/CustomControl.ascx");
//add dynamically created custom control to an existing panel or any container control on your page
pnlDemo.Controls.Add(cuCtrl);
注意:您始终可以在ASP
中添加using
命名空间;)
在此之后,即使检查Allow this precomplied site to be updatable
选项,您也不应该遇到任何问题。
答案 1 :(得分:0)
我明白了。我是动态添加这个新控件。但我没有意识到它也需要在我正在使用它的页面上注册。注册控件后,一切都按预期工作。
答案 2 :(得分:0)
我尝试了这个并且在发布时仍然遇到同样的问题,无论是使用引用标记还是注册标记它都不会发布。现在唯一的工作方式是取消选中“可更新站点”