Tentando incorporar um DataItem dentro de um asp: propriedade ImageUrl do controle de imagem
-
19-09-2019 - |
Pergunta
Eu tenho o seguinte controle de imagem dentro de um repetidor. Eu estou tentando obter o nome de usuário para processar em entre ~ / profilepics / e .jpg, mas recebo a seguinte saída processada
/profilepics/%3C%25#DataBinder.Eval (Container.DataItem,% 20% 22usernameFrom% 22)% 20% 25% 3E.jpg
Aqui está a marcação
<asp:Image ID="Image1" runat="server" ImageUrl='~/profilepics/<%#DataBinder.Eval(Container.DataItem, "username") %>.jpg' />
Eu também tentei o mesmo mas com aspas duplas e obter o mesmo resultado.
<asp:Image ID="Image1" runat="server" ImageUrl="~/profilepics/<%#DataBinder.Eval(Container.DataItem, "username") %>.jpg" />
Solução
Não vai funcionar dessa maneira. O WebControl Imagem não irá tomar tal marcação. O método comum é usar o evento ItemDataBound para atribuir a origem da imagem para cada controle de imagem dentro de um item de repetidor.
Se você quiser usar essas marcações, não use WebControl, tente o seguinte:
<img src='<%ResolveClientUrl("~/profilepics")%>/<%#DataBinder.Eval(Container.DataItem, "username") %>.jpg' />
Disclaimer:. Eu não testar o código exato acima, mas o conceito deve funcionar
Outras dicas
Você não pode usar a sintaxe de ligação de dados dentro de um controle de servidor. Você já tentou com uma tag img HTML simples em vez disso?
<img src='/profilepics/<%#Eval("username") %>.jpg' />