Попытка встроить DataItem в свойство ImageUrl элемента управления asp:Image

У меня есть следующий контроль изображения в повторителе. Я пытаюсь получить имя пользователя для рендеринга между ~/profilepics/ и.jpg, но получаю следующий вывод

/profilepics/%3C%25#DataBinder.Eval(Container.DataItem,%20%22usernameFrom%22)%20%25%3E.jpg

Вот разметка

<asp:Image ID="Image1" runat="server" ImageUrl='~/profilepics/<%#DataBinder.Eval(Container.DataItem, "username") %>.jpg' />

Я тоже попробовал то же самое, но с двойными кавычками и получил тот же результат.

<asp:Image ID="Image1" runat="server" ImageUrl="~/profilepics/<%#DataBinder.Eval(Container.DataItem, "username") %>.jpg" />

2 ответа

Решение

Это не будет работать таким образом. Image WebControl не будет принимать такую ​​разметку. Общий метод заключается в использовании события ItemDataBound для назначения источника изображения каждому элементу управления изображением в пределах элемента повторителя.

Если вы хотите использовать эти разметки, не используйте WebControl, попробуйте это:

<img src='<%ResolveClientUrl("~/profilepics")%>/<%#DataBinder.Eval(Container.DataItem, "username") %>.jpg' />

Отказ от ответственности: я не проверял точный код выше, но концепция должна работать.

Вы не можете использовать синтаксис привязки данных внутри серверного элемента управления. Вы пробовали с простым HTML-тегом img вместо этого?

<img src='/profilepics/<%#Eval("username") %>.jpg' />
Другие вопросы по тегам