Является ли сопоставление имен в ASP.NET последовательным?

Когда у вас есть элемент управления ASP, как это:

<asp:TreeView ID="TreeItems" runat="server"></asp:TreeView>

HTML, который он генерирует, искажает имена. Если я хочу получить прямой доступ к идентификаторам сгенерированных элементов, я могу попытаться выяснить, к каким именам это относится, и искать этот идентификатор.

Гарантируется, что имена созданных элементов будут выполнены определенным образом в соответствии с каким-либо стандартом Microsoft? Я просто боюсь этого взлома, если они выпустят новую версию.NET, которая делает это по-другому. Есть ли способ создать имя, искажающее себя в коде?

4 ответа

Решение

Не гарантируется согласованность (это детали реализации)

Вместо этого используйте ClientID (который дает вам сгенерированный идентификатор).

Я полагаю, что с ASP.NET на.NET 4 вы можете указать, что идентификаторы будут генерироваться определенным образом.

Смотрите: http://weblogs.asp.net/asptest/archive/2009/01/06/asp-net-4-0-clientid-overview.aspx

Кроме того, если вы используете jQuery, вы можете быть уверены, что номинальный идентификатор будет в идентификаторе клиента, поэтому вы можете выбрать его с чем-то вроде:

$("input[id*='TreeItems']")

Смотрите: http://api.jquery.com/attribute-contains-selector/

Если вы хотите использовать его в сценарии на стороне клиента, вы можете сделать следующее:

<script type="text/javascript">
    //initialize client names of server side controls.
    var TreeItemsId = "<%= TreeItems.ClientID  %>";    
</script>

Когда он отдает клиенту, он будет выглядеть примерно так:

<script type="text/javascript">
    //initialize client names of server side controls.
    var TreeItemsId = "ctl00_TreeItems";    
</script>

Нет, это не гарантируется быть последовательным.

Он должен быть согласованным, если используется одна и та же версия платформы, но обновления на сервере могут изменить это, поэтому не стоит полагаться на знание сгенерированного имени.

Использовать ClientID свойство, чтобы узнать сгенерированный идентификатор элемента управления.

Другие вопросы по тегам