Вот как я это делаю (похоже на ваше решение)
Каждый элемент управления реализует метод для привязки данных. Этот метод следует вызывать только в том случае, если представление, в котором он отображается, является «Активным». (Как вы уже делаете на стороне сервера).
Каждый из этих элементов управления содержит только литерал, в который я отображаю свой HTML-код из кода.
Я также хотел бы иметь более чистый способ, но элементы управления имеют свои методы OnLoad и так далее, даже если они невидимы. Насколько мне известно, вы должны выполнить такую операцию привязки данных или установить значение свойства вручную.
Не следует переопределять метод DataBind, поскольку он будет вызываться, даже если для самого элемента управления свойство Visible имеет значение false. (Вот как я помню, но вы можете проверить, чтобы убедиться). Более простым способом, вероятно, будет проверка вашего свойства в переопределенном методе DataBind и выполнение привязки данных только в том случае, если для него установлено значение true.