Я так и не понял, как помешать .NET сделать это, но я начал с размещения asp: Literals и использования c # для добавления к ним WebControl. Если вы пишете WebControl, вы можете устанавливать различные свойства, не получая уникальный идентификатор .NET.
Например:
<asp:Literal ID="myLink" />
...
WebControl a = new WebControl(HtmlTextWriterTag.A);
a.CssClass = "active";
a.Attributes["href"] = "#";
Literal text = new Literal();
text.Text = "click here";
a.Controls.Add(text);
myLink.Controls.Add(a);
Что приведет к следующему html:
<a href="#" class="active">click here</a>
В целом, довольно грязное решение, но я не знал, что еще делать в то время, и у меня был крайний срок. ;)