ID против UniqueID против ClientID против UniqueClientID против StaticClientID? - PullRequest
8 голосов
/ 25 августа 2011

Хорошо, я довольно озадачен идентификаторами динамически создаваемых элементов управления.

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, какой режим / комбинацию идентификаторов мне следует использовать?

Ответы [ 3 ]

16 голосов
/ 26 августа 2011
  • Идентификатор - это идентификатор сервера, который вы используете в своем коде.
  • UniqueId соответствует атрибуту «name» сгенерированного HTML-элемента.
  • ClientID соответствует атрибуту «id» сгенерированного html-элемента. Таким образом, это зависит от того, какой атрибут вам нужен (имя отправляется с постом формы, id используется для манипулирования DOM).
  • Не уверен, что такое uniqueclientid:)

ASP.Net 4 добавляет clientIdMode, который позволяет принудительно заставить атрибут id совпадать с идентификатором стороны сервера (и, следовательно, быть более предсказуемым), если вы установите его в «static».

1 голос
/ 26 августа 2011

ClientIDMode был добавлен в ASP.NET 4, чтобы разрешить контроль, если вы этого хотите.Это особенно полезно для библиотек на стороне клиента, таких как jQuery.Магия ASP.NET зависит от уникальности элементов управления.Если вы решили использовать Static, убедитесь, что они уникальны, поскольку в будущем вы можете столкнуться с неожиданными ошибками во время выполнения.

1 голос
/ 25 августа 2011

Используйте свойство ClientID.

ClientIDMode поддерживает 100-процентную установку фактического идентификатора, используемого элементом управления .. или нет. Твой выбор. В основном это помогает в написании кода JavaScript.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...