Оценка внутри ASP.net повторитель не работает внутри другого элемента управления

#asp.net #community-server #telligent

#asp.net #сервер сообщества #telligent

Вопрос:

У меня есть элемент управления Reapter с пользовательским элементом управления на стороне сервера внутри него. Когда я размещаю код:

 <%# Eval("DateAdded") %>
  

внутри шаблона элемента повторителя это работает нормально, но когда я помещаю его внутри пользовательского серверного элемента управления внутри повторителя, это не работает.
Возможно ли сделать что-то вроде Parent.Eval() или Container.Eval(), чтобы вернуться к контексту Reapeter, а не к пользовательскому элементу управления?

Ответ №1:

Повторитель привязан к данным, а элемент управления, в который вы помещаете этот оператор eval, — нет. Вам нужно будет передать значение элементу управления с помощью свойства.

Например:

 <uc1:MyControl MyProperty='<%# Eval("DateAdded") %>' />
  

Теперь вы можете получить доступ к MyProperty свойству внутри вашего элемента управления, чтобы получить доступ к этому значению.

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

1. Требуется ли для этого, чтобы MyProperty было определено как свойство заранее, или это можно просто сделать на лету? У меня нет доступа к исходному коду пользовательского элемента управления, поэтому я не могу добавить к нему свойства.

2. Да, это должно было бы быть свойством элемента управления.

Ответ №2:

Это должно сработать. Можете ли вы предоставить больше контекста / кода для серверного элемента управления?

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

 MyProperty='<%# Eval("DateAdded") %>'