web-dev-qa-db-fra.com

#Eval si instruction en répéteur

J'essaie de vérifier une valeur de chaîne dans un répéteur, et si elle a une valeur, écrivez un lien, mais ne semble pas le faire fonctionner. S'il existe une valeur dans myUrl, je souhaite afficher le lien.

 <%if( %> <%#Eval("myURL").ToString().Length > 0 %>
       <a  title="myTitle" target="_blank" href="<%# Eval("myURL") %>">my link</a>                  
 <% } %>

Quelqu'un peut-il aider s'il vous plait?

22
Wildcat

essayez ce code !!!

<%#Eval("myURL").ToString().Length > 0 ?
"<a  title='myTitle' target='_blank' href='<%# Eval("myURL") %>'>my link</a>":""%>
28
Madhu Beela

Personnellement, je déteste utiliser une logique conditionnelle comme celle-ci dans la page. 

Je pense que deux options sont meilleures. Vous pouvez avoir un contrôle d’hyperlien dans le répéteur et définir la visibilité en fonction du paramètre myURL. 

visibility='<% #Eval("myURL").ToString().Length > 0 %>' 

OU ce que vous pouvez faire est d’avoir une méthode sur votre code derrière que vous rappelez avec le paramètre "myURL".

Par exemple.

public string CreateURL(string myURL){
    if(!string.IsNullOrEmpty(myURL)){
       return "<a ... ";
    }

    return string.Empty;
}

Et appelez ASPX

<%# CreateURL(Eval("myURL").ToString()) %>

NB: il s’agit d’un code non testé mais c’est ainsi que je fais habituellement ce genre de chose.

20
Dave Walker

Je voudrais utiliser le String.Format et inclure le HTML en tant que partie de la chaîne. Certes, ce n'est pas le code le plus ordonné jamais écrit, mais à mon avis c'est la meilleure option:

Par exemple, ci-dessous générera une balise d'ancrage si la propriété Url existe, sinon elle générera une étendue.

<%# string.Format(Eval("Url") != null ? "<a href=\"{0}\">{1}</a>" : "<span>{1}</span>", Eval("Url"), Eval("Text")) %>">
5
Kevin Farrugia

Essayez d’ajouter un runat="server" puis d’ajouter un bloc de script pour la (nouvelle) propriété visible côté serveur:

 <a  title="myTitle" target="_blank" href="<%# Eval("myURL") %>" runat="server" visible='<%#Eval("myURL").ToString().Length > 0 %>'>my link</a>
3
pete
1
ravidev

Vous pouvez également appeler votre fonction publique à l'intérieur du code derrière le fichier:

<%# MyFunction(Eval("myURL").ToString().Length) %>
0
boateng