Используйте пользовательский элемент управления в той же папке как страница

Я получаю это сообщение во времени выполнения ASP.NET 2 страницы:

Страница 'MyFolder/blabla.aspx' не может использовать пользовательский элемент управления 'MyFolder/MyControl.ascx', потому что это регистрируется в web.config и жизнях в том же каталоге как страница.

Конечно, я могу разделить их к 2 различным папкам и таким образом решить проблему, но вопрос:

WTF!?!?! Почему я не могу поместить их в ту же папку?! Почему не может они все.. проживите!?!:)

Спасибо

20
задан Alex 3 June 2010 в 08:31
поделиться

2 ответа

Это ограничение является конструктивным из-за внутренних конструктивных соображений, касающихся производительности.

См. здесь для получения дополнительной информации.

Примечания

Класс TagPrefixInfo позволяет программно получать доступ и изменять информацию о префиксе тегов, хранящуюся в файле конфигурации. Это обеспечивает ту же функциональность, что и регистр ASP.NET @ директива. Префиксы тегов связывают «пространство имен» в ASP.NET с сборки и пространства имен, которые должны быть включены для настраиваемых элементов управления и пользовательские элементы управления для правильной работы. Объекты TagPrefixInfo хранятся как члены объекта TagPrefixCollection . В Класс TagPrefixCollection позволяет получить программный доступ и изменить подраздел controls раздела pages конфигурационный файл.

Объекты TagPrefixInfo добавляются в коллекцию с помощью add элемент и указав значение для атрибута tagPrefix вдоль со значениями для других соответствующих атрибутов.Другой требуемый информация зависит от типа управления, который вы будете использовать с указанный префикс тега:

  • Если это пользовательский элемент управления, необходимо определить свойства TagPrefix , TagName и Source .
  • Если это настраиваемый элемент управления, необходимо определить свойства TagPrefix , Пространство имен и Сборка . Сборка свойство не требуется, если элемент управления находится в коде приложения каталог. Одно и то же значение tagPrefix можно использовать для сопоставления с несколькими сборки или пространства имен.

Примечание Когда указан источник, сам пользовательский элемент управления не должен находиться в том же каталоге, что и страница. Если это так, вы получите время выполнения ошибка при попытке загрузить страницу.

13
ответ дан 30 November 2019 в 01:08
поделиться

Я подозреваю, что вы могли бы сделать это без регистрации. , если это было необходимо. Вероятно, вы могли бы иметь PlaceHolder, а затем использовать .Controls.Add (LoadControl ("path.ascx"))

Но если это не важно, поместите его в другой каталог по причинам, указанным @Barry.

2
ответ дан 30 November 2019 в 01:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: