LoadControl на элементе управления со ссылкой на сборку - PullRequest
0 голосов
/ 28 октября 2009

Я пытаюсь использовать System.Web.UI.TemplateControl.LoadControl для создания шаблонной веб-части для приложения SharePoint, и у меня возникают проблемы с элементом управления, который ссылается на внешнюю сборку.

У меня есть пользовательский элемент управления с первыми несколькими строками, такими как:

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

Веб-часть является производной от базовой веб-части, которая реализует шаблоны и некоторые другие утилиты, которые находятся в сборке под названием «MyWebParts» (например), в то время как производный класс веб-части находится в «MyProject». MyProject имеет ссылку на «MyWebParts» (очевидно) и «AjaxControlToolkit», но «MyWebParts» не имеет ссылки на «AjaxControlToolkit». Во время выполнения, когда шаблонная веб-часть пытается загрузить пользовательский элемент управления (файл .ascx в корневой папке SharePoint «controltemplates»), она вызывает базовые методы, унаследованные между сборками, и выдает исключение HttpParseException, указывая, что она не может загрузить требуемую сборку. EventViewer подтверждает, что рассматриваемой сборкой является AjaxControlToolkit.

Я попытался добавить сборку AjaxControlToolkit в web.config для sharepoint, и он находится в GAC, но безрезультатно.

Кто-нибудь знает, как я могу это сделать, не имея ссылки на все существующие сборки в моей сборке "MyWebParts"?

1 Ответ

0 голосов
/ 28 октября 2009

Добавьте ссылку на вашу сборку в разделе сборок 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.

...