0

我创建了一个自定义用户控件库。我使用 Visual Studio 2012 创建了一个空的 Web 应用程序,并在其中放置了一个自定义用户控件,该控件在 ascx 文件中具有以下顶行。

<%@ Control Language="C#" ClassName="MyControls.HelloWorld" AutoEventWireup="true" CodeBehind="HelloWorld.ascx.cs" Inherits="MyControls.Controls.HelloWorld" %>

明确说明 ClassName 的目的是让主网站应用程序可以加载/使用自定义控件。当然,文件后面有一个代码。不管它值多少钱,有一个 DevExpress 回调面板,在事件处理程序后面有一个 C# 代码。

我使用构建然后发布 MyControls 库

  • 发布期间预编译
  • (配置)将所有输出合并到一个程序集中
  • (没关系,但我选中了“视为库组件......”。
  • 我将名称设置为 MyControlsLib

(为什么要勾选,因为勾选或不勾选,都是一样的问题。)

我创建了一个网站 MyWebsite,并添加了对 MyControls 和 MyControlsLib 的引用。

然后我使用 LoadControl 并指定控件的类型:

typeof (MyControls.HelloWorld)

然后我继续显示用户控件。这工作正常,没有问题。

问题:问题是后面的代码没有执行。我收到错误消息:

The target $#39;ctl00$ctl00$cpDynamic$dpopHelloWorld$uc$cpHelloWorld&#39; for the callback could not be found or did not implement ICallbackEventandler.

该神秘的错误消息基本上表明运行时环境找不到文件隐藏的代码。我正在使用 IE10(在 Windows 7 下)在 Visual Studio 中使用调试环境 (F5) 进行测试。我设置了一个断点,我没有命中。

我确实需要这两个引用,因为 MyControls.dll 中的代码与我在主应用程序中使用的用户控件无关。MyControlsLib.dll 包含用户控件。

虽然我使用的实际文章是另一篇 MSDN 文章,但这里的大纲是相似的。

为什么主 asp.net 网站没有找到背后的代码?

4

0 回答 0