使用汇编参考控制LoadControl

时间:2009-10-27 22:03:49

标签: asp.net sharepoint user-controls web-parts

我正在尝试使用System.Web.UI.TemplateControl.LoadControl为SharePoint应用程序构建模板化Web部件,而我在使用引用外部程序集的控件时遇到问题。

我有一个用户控件,前面几行如下:

<%@ Control Language="C#" ClassName="MyControl" %>
<%@ Assembly Name="AjaxControlToolkit" %>
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %>

Web部件派生自实现模板的基本webpart和一个名为“MyWebParts”的程序集中的其他实用程序(例如),而派生的Web部件类位于“MyProject”中。 MyProject引用了“MyWebParts”(显然)和“AjaxControlToolkit”,但“MyWebParts”没有引用“AjaxControlToolkit”。在运行时,当模板化Web部件尝试加载用户控件(“controltemplates”SharePoint根文件夹中的.ascx文件)时,它会调用它在程序集中继承的基本方法,并抛出HttpParseException,表明它无法运行t加载所需的组件。 EventViewer确认有问题的程序集是AjaxControlToolkit。

我尝试将AjaxControlToolkit程序集添加到sharepoint的web.config中,并且它位于GAC中,但无济于事。

任何人都知道如何在没有引用我的“MyWebParts”程序集中存在的每个程序集的情况下执行此操作吗?

1 个答案:

答案 0 :(得分:0)

在web.config程序集部分中添加对程序集的引用,这将强制sharepoint将该程序集加载到内存中,如下所示:

<assemblies>
  <add assembly="AjaxControlToolkit, Version=1.0.10920.16768, Culture=neutral, PublicKeyToken=28f01b0e84b6d53e"/>
</assemblies>

P.S。这是针对ajax 1.0,如果您使用的是AJAX 3.5版本,请更正程序集版本。