Вы всегда должны использовать что-то вроде этого. Controls. Add (TemplateControl.LoadControl ("~ / PathTo / YourControl.ascx")
Причина в том, что в ascx-файле нет внутреннего отображения типов в этот файл (только наоборот). Таким образом, это означает, что если вы инициализируете новый YourControl (), он не будет делать ничего, что вы определили в части ascx. Если бы вы имели
protected override void protected override void Render(HtmlTextWriter output) {
output.WriteLine("Test");
}
это даст вам «Тест» в том месте, где вы отдали свой контроль.