Вместо того, чтобы объявлять свой UserControl как тип «Control», объявите его как имя класса, указанное в файле UserControl.ascx:
<%@ Control className="MyUserControl" %>
Итак, в вашем коде на странице .aspx:
Dim objControl as ASP.MyUserControl = CType(LoadControl("~\Controls\MyUserControl.ascx"), ASP.MyUserControl)
Более подробная информация доступна на MSDN .
РЕДАКТИРОВАТЬ: проверьте файл с выделенным кодом для вашего пользовательского элемента управления и запишите пространство имен и имя класса, которые там находятся. Когда я создал свой пользовательский элемент управления, он был автоматически добавлен в пространство имен, которое содержало имя папки, а также пространство имен приложения.
Затем в вашем .aspx.vb замените «ASP.ContentModule» на «Namespace.ClassName» из файла .ascx.vb. Также убедитесь, что вы все еще вызываете метод Add для своего заполнителя.
Мой пример на C #, но я могу поставить его на VB, если вам нужно. Мое приложение было удобно названо «Тестер».
Код ASCX:
namespace Tester.modules
{
public partial class content : System.Web.UI.UserControl
{
protected void Page_Load(object sender, EventArgs e)
{
}
}
}
ASPX-код:
namespace Tester
{
public partial class _Default : System.Web.UI.Page
{
private Namespace.ClassName loadmodule;
protected void Page_Load(object sender, EventArgs e)
{
loadmodule = (Namespace.ClassName)LoadControl("~/modules/content.ascx");
Modulecontainer.Controls.Add(loadmodule);
}
}
}