У вас есть пара вариантов ..
1.) Смешивать логику с разметкой, как вы уже делаете (на мой взгляд, это плохо)
2.) Динамически добавлять элементы управления, примерно так:
MyPage.aspx
<asp:Panel id="pnlErrorPlaceHolder" runat="server">
</asp:Panel>
MyPage.aspx.cs
if (i_found_some_error)
{
Label lbl = new Label();
lbl.Text = "An error occurred";
pnlErrorPlaceHolder.Controls.Add(lbl);
}
OR
3.) Вы можете воспользоваться атрибутом Visible, который помогает решить, будет ли элемент управления частью ответа или нет. Это будет выглядеть примерно так:
MyPage.aspx
<asp:Panel id="pnlErrorBox" Visible="false" runat="server">
Some info for the user if there was an error.
</asp:Panel>
MyPage.aspx.cs
if (there_was_an_error)
{
pnlErrorBox.Visible = true;
// and maybe set some additional info
}