Поместите местозаполнитель в Action
и при необходимости вызовите его.
<%
Action myPlaceholder = () =>
{%>
<asp:ContentPlaceHolder ID="X" runat="server" />
<%}
%>
... затем вызовите, где необходимо, код.
<% if (conditionMet)
myPlaceholder(); >%
Ошибка возникает привремя компиляции: будет подана жалоба, если заполнители с таким же идентификатором существуют.Такой подход устраняет это препятствие и дает большую гибкость.