我们使用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指令,以指向第二个控件的代码背后(共享相同功能)....it工作得非常好。
我尝试过的其他一些事情:
Permissions
因此,在这一点上,我不知道为什么我不能使用代码背后,我试图添加将无法工作。我可以把它指向另一个类的代码背后,它运行得很好。(在更改"inherits“值之后),所以我只能假设它是一个编译问题。但它的构建是正确的,没有错误。
我忘了什么?
发布于 2010-01-28 16:23:45
我发现了问题。这个项目是一个"Web应用程序“而不是一个”网站“,所以它不仅需要编译,而且我必须部署网站的程序集。
发布于 2010-01-27 01:45:51
将控件标记更改为
<%@ 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);发布于 2010-01-27 02:05:07
一些想法:
确保完全清除和重新生成application.
中。
https://stackoverflow.com/questions/2143977
复制相似问题