ASP.Net 3.5: указание HTML-идентификатора элемента управления - PullRequest
2 голосов
/ 25 января 2010

У меня есть элемент управления, который повторяется несколько раз на странице. Мне бы хотелось, чтобы в каждом случае был уникальный идентификатор, который я буду определять (а не тот ужасный идентификатор, который прикреплен asp.net) Проблема в том, что я буду знать идентификатор только во время выполнения.

Я бы хотел в .aspx написать следующее:

<uc8:MyControl ID="<%=THEID%>" runat="server" />

но я знаю, что это не работает. Как правильно подойти к этому?

Большое спасибо!

Ответы [ 4 ]

1 голос
/ 25 января 2010

Вы можете добавить с кодом:

MyControl control = new MyControl();
control.ID == "myControl" + count.ToString();
ph.Controls.Add(control);

где ph - элемент управления Placeholder или Panel, count - какой-то счетчик.

0 голосов
/ 25 января 2010

К сожалению, вы застряли с .NET id в настоящее время в ASP.NET 3.5. Если вы не хотите добавлять элемент управления программно во время выполнения, вы можете только прочитать Id, как он появится на клиенте. Вам часто приходится делать какие-то трюки на стороне клиента, чтобы найти правильный элемент управления.

Однажды, чтобы сделать форму 508 совместимой, мне пришлось проанализировать шаблон, который, по-видимому, использовал .NET, чтобы дать идентификаторы моим вложенным элементам управления, и попытаться предсказать его. , кажется, работал в течение прошлого года; Я держу пальцы скрещенными. Или вы можете получить свойство ClientID во время выполнения и записать его в скрытое поле, например так:

<input id='SpecialControlID' type='hidden' value='<%= SpecialControl.ClientID %>'>

Тогда вы Javascript можете определить идентификатор. Короче, нет хороших способов, только надоедливые способы взлома. Проще всего добавить свои элементы управления во время выполнения.

Надежда поставляется с VS2010, где у вас есть варианты для улучшения этого. Вы можете изменить настройки для элемента управления, чтобы использовать указанный идентификатор или просто упростить алгоритм .NET, используемый для определения идентификатора, чтобы он был более предсказуемым. Вот хорошая ссылка .

0 голосов
/ 25 января 2010

ASP.NET 4 имеет «предсказуемые идентификаторы клиента» http://www.asp.net/learn/aspnet-4-quick-hit-videos/video-8845.aspx

0 голосов
/ 25 января 2010

Лучше добавить элемент управления из кода позади, добавить панель, а затем добавить элементы управления к нему.

...