我们正在使用LoadControl动态地将ascx文件加载到占位符控件中。代码隐藏看起来非常简单:
child = base.LoadControl(manufacturerTemplate.TemplatePath);
this.ManufacturerPlaceHolder.Controls.Add(child);
控件标题如下所示:
<%@ Control Language="C#" AutoEventWireup="true" Inherits="MyNamespace.MyControl" CodeBehind="MyControl.ascx.cs" %>
我已经验证了所有内容和编译的拼写。它在ASP.NET开发Web服务器中工作正常。但是当我将它上传到我的IIS主机时,我收到了这个错误:
分析程序错误:无法加载类型'MyNamespace.MyControl。
代码隐藏编译没有错误。它实际上是另一个控件的代码隐藏的重复。 (验证拼写是准确的)我尝试过的一件事是修改@Control指令以指向第二个控件的代码隐藏(共享相同的功能)....它完美地工作。
我尝试过的其他一些事情:
所以在这一点上,我不知道为什么我不能使用我试图添加的代码隐藏不起作用。我可以将它指向其他类的代码隐藏,并且它工作正常。 (在更改“inherits”值之后)所以我只能假设它是一个编译问题。但它正确构建没有错误。
我忘了什么?
答案 0 :(得分:1)
将您的控制标记更改为此
<%@ Control ClassName="MyControl" Language="C#" AutoEventWireup="true" CodeFile="MyControl.ascx.cs" Inherits="MyControl" %>
在您正在使用控件的ASPX页面上,添加此代码
<%@ Reference Control="~/path/to/control/MyControl.ascx" %>
在您的代码中使用此
MyControl controlObject= (MyControl)LoadControl("~/path/to/control/MyControl.ascx");
this.Controls.Add(controlObject);
答案 1 :(得分:0)
一些想法:
答案 2 :(得分:0)
我发现了问题。该项目是一个“Web应用程序”,而不是“网站。所以它不仅要编译,而且我必须部署网站的程序集。