我有一个使用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" %>


注意:确保ClassNameInherits都与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选项,发布也不会遇到任何问题。

10-05 20:36
查看更多