Я не знаю, как остановить .NET от искажения идентификатора, но я могу придумать несколько способов обойти это:
1 - Пролетные гнезда, один с runat = "server", один без:
<style type="text/css">
#position_title { // Whatever
}
<span id="position_titleserver" runat="server"><span id="position_title">Manager</span></span>
2 - Как предложил Джоэл Кохорн, используйте уникальное имя класса. Уже используете класс для чего-то? Не имеет значения, вы можете использовать более 1! Это ...
<style type="text/css">
.position_title { font-weight: bold; }
.foo { color: red; }
.bar { font-style: italic; }
</style>
<span id="thiswillbemangled" class="foo bar position_title" runat="server">Manager</span>
... отобразит это:
Менеджер
3 - написать функцию Javascript для исправления идентификаторов после загрузки страницы
function fixIds()
{
var tagList = document.getElementsByTagName("*");
for(var i=0;i<tagList.length;i++)
{
if(tagList[i].id)
{
if(tagList[i].id.indexOf('$') > -1)
{
var tempArray = tagList[i].id.split("$");
tagList[i].id = tempArray[tempArray.length - 1];
}
}
}
}