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" />
Foi útil?

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' />
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top