ClientIDMode был добавлен в ASP.NET 4, чтобы разрешить контроль, если вы этого хотите. Это особенно полезно для библиотек на стороне клиента, таких как jQuery. Магия ASP.NET зависит от уникальности элементов управления. Если вы решили использовать Static, убедитесь, что они уникальны, поскольку в будущем вы можете столкнуться с неожиданными ошибками во время выполнения.
, я довольно озадачен идентификаторами динамически создаваемых элементов управления.
Public Class TestClass
Inherits Panel
Implements INamingContainer
Function TestClassInit() Handles Me.Init
Dim pnlMainPanel As New Panel
Me.Controls.Add(pnlMainPanel)
Dim pnlTest1 As New Panel
pnlMainPanel.Controls.Add(pnlTest1)
pnlTest1.ClientIDMode = UI.ClientIDMode.Inherit ' DEFAULT
'pnlTest1.ID = "ctl01"
'pnlTest1.UniqueID = "ctl00$MainPanel$ctl01"
'pnlTest1.ClientID = "MainPanel_ctl01"
'pnlTest1.UniqueClientID = "ctl00_MainPanel_ctl01"
'pnlTest1.StaticClientID = ""
pnlTest1.ClientIDMode = UI.ClientIDMode.Predictable
'pnlTest1.ClientID = "MainPanel_ctl01" (no change)
pnlTest1.ClientIDMode = UI.ClientIDMode.AutoID
'pnlTest1.ClientID = "ctl00_MainPanel_ctl01"
pnlTest1.ClientIDMode = UI.ClientIDMode.Static
'pnlTest1.ClientID = ""
End Function
End Class
Почему 5 разных идентификаторов?
Когда следует использовать разные режимы идентификации?
(Я читал документы MSDN, но они, как обычно, не особенно освещали.)
Если мне все равночто Идентификатор есть, и я просто хочу добавить элемент управления и присвоить его идентификатор динамически добавляемому расширителю AJAX. Какой режим / комбинацию идентификаторов следует использовать?