Мне понадобился инструмент проверки, который можно было бы повторно использовать в нескольких проектах, поэтому я решил сделать его элементом управления веб-пользователя.Ниже приведены шаги, которые я предпринял для его настройки:
- Создал новый веб-проект и добавил свой элемент управления веб-пользователями.
- В IIS я включил проект какприложения, и установите эту новую папку проекта как виртуальный каталог во всех проектах, которые будут его использовать, и включили каждый виртуальный каталог как приложение.
Для каждого проекта, который использует элемент управления, я добавилссылка на dll и добавление элемента управления к этому проекту web.config
:
<add tagPrefix="ut" src="~/UserControls/ValidateAcct.ascx" tagName="ValidateAcct" />
ПРИМЕЧАНИЕ. 'UserControls'
- это виртуальный каталог, который фактически не существует в каждом из хост-проектов.
Затем я добавил элемент управления на страницу хоста:
<ut:ValidateAcct ID="valAcct" runat="server" />
Во время выполнения содержимое из пользовательского веб-элемента управления корректно отображается на странице хоста, но из-за кода на главной странице я не могу вызвать ни один из методов, которые я создал для веб-контроля пользователя.Если я создаю экземпляр управления полностью из кода, методы есть.Я предполагаю, что это потому, что я работаю исключительно из dll и не использую какой-либо виртуальный каталог.
Другая проблема, с которой я сталкиваюсь, связана с событиями.Я создал следующее событие в пользовательском веб-элементе управления, и я хотел бы обработать его на своей странице хоста:
protected virtual void AccountValidated(object sender, EventArgs e) { }
Еще раз, из-за кода страницы хоста я не могу получить доступ к этому событию.Я подумал, что, возможно, я мог бы просто создать экземпляр элемента управления в коде для доступа к событию, как я делал с методами, но даже это не сработало.
Цель в том, чтобы мне это понравилосьпользовательский элемент управления, который будет использоваться несколькими проектами на одном веб-сайте, но должен содержать только одну копию элемента управления / кода.Вот почему я пошел по пути виртуального каталога, но у меня есть чувство, что это причина всех моих проблем.Буду очень признателен за любую помощь!