Как использовать привязанное к данным значение для формирования уникального идентификатора для элемента управления?

#asp.net #asprepeater

#asp.net #asprepeater

Вопрос:

Я знаю, что мы можем привязать данные к каждому элементу управления в ItemTemplate следующим образом:

 <ItemTemplate>
    <asp:TextBox runat="server"
        Text='<%# Eval("LabelText") %>' />
</ItemTemplate>
  

Однако я не нашел способа объединить строковый префикс со значением данных для формирования уникального строкового идентификатора. Следующий код демонстрирует мою идею, но это не работает.

 <ItemTemplate>
    <asp:TextBox runat="server"
         ID='TextBox_<%# Eval("LabelID") %>'
         ValidationGroup = 'VVG_<%# Eval("LabelGroup") %>'
         Text='<%# Eval("LabelText") %>' />
</ItemTemplate>
  

Комментарии:

1. Не могли бы вы, пожалуйста, рассказать нам, почему это не работает. Какое поведение создает ваш код?

2. например, результатом ValidationGroup будет: «VVG_<%# Eval(«LabelGroup») %>»

Ответ №1:

Попробуйте это

ID = ‘<%# «Text_» Eval(«labelId») %>’

 ValidationGroup = '<%# "VVG_"   Eval("LabelGroup") %>'
  

Редактировать:

Идентификатор не может быть назначен таким образом для элементов управления на стороне сервера. Вы можете назначить идентификатор для простых элементов управления формой, таких как <input type="text"... /> . Также взгляните на элемент управления.ClientIDMode (ASP.NET 4).

Комментарии:

1. Я не думаю, что это сработает, когда я попытался запустить пример с ним, я получил сообщение об ошибке с надписью Сообщение об ошибке синтаксического анализатора: Свойство ID элемента управления может быть установлено только с использованием атрибута ID в теге и простого значения. Пример: <asp:Button runat="server" id="Button1" />

2. @R0MANARMY вы пробовали это в ItemTemplate повторителя?

3. Внутри части ItemTemplate повторителя я могу опубликовать свой код, если вы хотите.

4. @Bala R: Я думаю, более конкретно, я не думаю (согласно ошибке), что это сработает для поля ID, но должно подойти для других.

Ответ №2:

Попробуйте это:

 <asp:TextBox runat="server"         
    ID='<%# String.Format("TextBox_{0}",Eval("LabelID")) %>'         
    ValidationGroup = '<%# String.Format("WG_{0}",Eval("LabelGroup")) %>'         
    Text='<%# Eval("LabelText") %>' />