如何在asp.net用户控件(ascx)中插入activex

Posted

技术标签:

【中文标题】如何在asp.net用户控件(ascx)中插入activex【英文标题】:How to insert activex in asp.net user control (ascx) 【发布时间】:2012-08-30 05:38:06 【问题描述】:

我有一个关于集成 betweek ASP.NET(ASCX 控制器)和 ActiveX 的新问题。我正在尝试在我的应用程序中插入 SignDoc activeX。

这个组件有几个 dll,但我不知道如何将它插入到我的控件中。

我使用的是 Visual Studio 2008,控件安装在 Sharepoint 2007 场中。

感谢您的建议

【问题讨论】:

【参考方案1】:

首先,您在 MOSS 中托管并不重要。它是一个 ActiveX,它将在客户端浏览器上运行。因此,只要它没有服务器端部分或连接,您就可以在一个普通的 asp.net 页面中开始测试它。一个不好的副作用是您需要在每台客户端计算机上手动注册它,或者将其包含在您的 asp.net 页面的 CAB 文件中

第二, 您的组件有 2 个 dll。您需要使用 regsvr32 工具注册它们。 我不确定每个 dll 里面是否有一个 COM 对象,或者只有一个有 COM,另一个是助手。因此,您可能需要在命令提示符中键入以下 2 行:

regsvr32 -i "dll1 的完整路径" regsvr32 -i "dll2 的完整路径"

如果上述命令之一失败没问题,但至少有一个应该成功

最后一步是最简单的,在VS中打开一个空白的asp.net页面并展开工具箱,然后在工具箱的空白区域内右键单击并选择“选择项目”,然后将您的ActiveX添加到工具箱中,然后您可以简单地将其拖到页面上。如果你切换到页面的源视图,你会发现对象标签。

编辑:在 Windows 7 中,您通常以管理员身份运行控制台,以便成功执行 regsvr32 命令。

【讨论】:

我按照您的步骤操作...每个 regsvr32 -i 都失败,但我可以在 Visual Studio 上看到 SignDocActiveX 类...问题是该类不可拖动并且尽可能“禁用”看到..当我点击它时,我看不到其他人的 clsid,所以我认为是注册问题或类似的问题.. 您好 Ziba,您确定 ActiveX 位于其中一个 DLL 中吗,您是否还有其他扩展名为 OCX 或 tlb 的文件。您有任何关于如何注册此 ActiveX 的文档或手册吗? 嗨,我有一个适用于这些 dll 的 Windows 应用程序解决方案...正如我可以看到在表单中插入的任何其他控件一样...我不明白为什么我不能将它插入一个网页.. 您好 Ziba,在您的 WinForm 应用程序中打开表单的设计器文件,您会发现 ActiveX 作为类成员并且以 Ax 开头的某种类型。将光标放在此类名称中,然后按 F12 转到定义。你会发现一些类似的代码: [DesignTimeVisible(true), Clsid("e23fe9c6-778e-49d4-b537-38fcde4887d8")] public class AxVLCPlugin : AxHost 。获取 GUID 值并在 html 对象标签中使用它,它可能会起作用【参考方案2】:

ActiveX 使用对象标签和相应的类 ID 包含在页面中。

在此处了解更多信息:http://msdn.microsoft.com/en-us/library/ms970419.aspx

【讨论】:

以上是关于如何在asp.net用户控件(ascx)中插入activex的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET用户自定义控件

在网格视图中的 ASCX 控件内的控件上使用 Javascript 显示隐藏。 (ASP.NET + Javascript)

Javascript 在 ASCX 中不起作用 – ASP NET 用户控件

将数据从 ASP.NET 页面传递到动态加载的 ASCX 用户控件

ASP.Net 过度使用用户控件

ASP NET 如何将事件从 ASPX 发送到 ASCX