Я использовал следующий подход для загрузки элементов управления .ascx. Фактически я сохранил файлы .ascx в поле «текст».
Сначала я зарегистрировал элемент управления в файле web.config:
<pages>
<controls>
<add tagPrefix="tab" src="~/pg.ascx" tagName="Test"/>
</controls>
</pages>
В веб-форме я считываю содержимое .ascx из базы данных и сохраняю его в pg.ascx под root и динамически загружаю пользовательский элемент управления.
Control t = LoadControl("~/pg.ascx");
PlaceHolder1.Controls.Add(t);
EDIT:
Я добавляю определение пользовательского элемента управления, которое я сохранил в объект StringBuilder.
System.Text.StringBuilder sb = new System.Text.StringBuilder();
sb.Append("<%@ Control Language=\"C#\" ClassName=\"m1\" %>");
sb.Append("<script runat=\"server\">");
sb.Append("int no=10;");
sb.Append("public void page_load(){ for(int i=1;i<=no;i++) { Response.Write(i);} }");
sb.Append("</script>");
sb.Append("<h1>Hello</h1>");
System.IO.File.WriteAllText(MapPath("~/pg.ascx"), sb.ToString());
Control t = LoadControl("~/pg.ascx");
PlaceHolder1.Controls.Add(t);