Вообще говоря: нет.
Насколько я знаю, ASP.NET наследует от ваших классов , чтобы объединить шаблон .aspx / .ascx с вашим кодом. Вот почему ваши элементы управления отображаются пустыми: код для объединения шаблона с вашим кодом отсутствует. Обычно это делается в ASP.NET при первом обращении к странице или пользовательскому элементу управления (именно поэтому первое попадание немного медленное: оно фактически генерирует и компилирует код подключения).
Для предварительно скомпилированных веб-сайтов ASP.NET заранее создает этот код как часть .dll предварительно скомпилированного веб-сайта, поэтому такие сайты загружаются быстрее. Тем не менее, IIRC вам все равно нужно будет создавать сгенерированные классы, а не исходные классы.
Это довольно распространенный запрос, но до сих пор MS не предоставила инструменты для этого.
Редактировать: Хотя я не понимаю, почему вы хотите отобразить элемент управления в строку в памяти, у меня может быть решение проблем сборки.
Если вы придерживаетесь не скомпилированных файлов .ascx (используя модель веб-сайта, а не модель веб-приложения), вы на самом деле можете разрабатывать их отдельно, помещая их физически в подпапку основного проекта и рассматривая их как файлы содержимого. только. Затем вы можете создать отдельный проект с этой подпапкой в качестве корневой. Вам нужно только обрабатывать файлы в этой подпапке как файлы веб-сайта, основным проектом по-прежнему может быть веб-приложение. (На самом деле рекомендуется, потому что вы не хотите, чтобы файлы .csproj были включены в основной проект.)
Однако общий код (то есть общий для проекта элементов управления и основного проекта) следует поместить в отдельный библиотечный проект, чтобы можно было скомпилировать каждый проект отдельно без взаимозависимостей.
Использование LoadControl
в основном проекте скомпилирует их на лету (возможен код сзади); если вам нужно установить свойства, вы должны определить интерфейсы в общем проекте, внедрить их в соответствующие пользовательские элементы управления и привести элемент управления, созданный с помощью LoadControl
, к соответствующему интерфейсу.