我有一个使用Visual Studio 2010和ASP.Net 4.0的Web解决方案。在此解决方案中,有一个网站以及一个类库。
我向网站添加了一个新的用户控件,并且能够构建所有内容。我什至可以使用新控件进行发布。当我尝试在另一部分代码中引用该控件的类名时,就会出现问题。当我这样做时,我仍然能够构建/重建整个解决方案。但是,当我尝试发布时,出现错误“找不到类型或名称空间名称”。
发布时,我们始终取消选中“允许此预编译站点可更新”框,并且始终选中“使用固定命名和单页程序集”框。
如果我发布并取消选中“使用固定命名和单页程序集”框,它将很好地发布。但是由于某种原因,我无法使用复选框CHECKED来发布它,这是我需要做的。
我努力了:
清洁溶液
重新启动Visual Studio
重启电脑
清除.net临时文件文件夹
重新创建控件
将网站中的所有内容放入命名空间
任何帮助或见识将不胜感激。
谢谢。
编辑:
我想到了。我正在动态添加此新控件。但是我没有意识到它也需要在使用它的页面上注册。注册控件后,一切正常
最佳答案
当您要动态使用Web用户控件时,如使用其他.net控件(如文本框,标签等),则需要执行以下步骤。
(1)在您的控制指令中添加一个ClassName
属性,如下所示(在ascx文件中)
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="CustomControl.ascx.cs"
Inherits="CustomControl" ClassName="CustomControl" %>
注意:确保
ClassName
和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
选项,发布也不会遇到任何问题。