2009-12-16 2 views
2

У нас есть набор пользовательских элементов, соответствующих DLL. мы могли бы просто загрузить элементы управления, используя их имена классов пролетели как ASP.theusercontrol_ascx blah = new ASP.theusercontrol_ascx();Как загрузить пользовательские элементы управления с помощью имени файла?

, но если у нас есть динамические данные и загрузить элементы управления, основанные на имени файла (или имя управляющего), как мы можем загрузить их как Page.LoadControl("TheURL/theusercontrol.ascx")?

Большое спасибо ...

ответ

2

Там на самом деле не собственно способ сделать это. Файлы .ascx не предназначены для развертывания таким образом. Код был скомпилирован в .dll, но фактической разметки из файла .ascx нет. Даже если вы следуете официальной документации Microsoft по адресу converting .ascx files to deployable controls, вы теряете возможность вызвать LoadControl на основе имени файла, просто потому, что больше нет файла разметки.

Существует множество плавающих вокруг hacks, которые позволяют делать это с помощью отражения и вложения файлов .ascx в качестве ресурсов.

Кроме того, если вам действительно нужно использовать LoadControl(filename), вам необходимо скопировать файлы .ascx.

+0

Если это так, мы могли бы просто создать экземпляр пользовательского элемента управления. Но проблема в том, что нам действительно нужно использовать строки для создания экземпляра ... И здесь снова появляется отражение ... = ( – Jronny

+0

О, ну, у меня действительно нет выбора. Отражение снова спасает мою жизнь. – Jronny