2012-02-15 24 views
18

Estoy tratando de verificar un valor de cadena dentro de un repetidor, y si tiene valor, escriba un enlace, pero parece que no funciona. Si hay un valor en myUrl, entonces quiero mostrar el enlace.#Eval if instrucción en el repetidor

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

¿Alguien por favor ayuda?

Respuesta

25

intente esto código !!!

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

gran - muchas gracias! – Wildcat

+10

técnicamente correcto pero realmente obsceno buscando .. –

+1

espero que muchas personas nunca usen declaraciones condicionales ... ese es el problema ... – Madhu

19

Personalmente odio usar la lógica condicional así en la página.

Hay dos opciones que creo que son mejores. Puede tener un control de hipervínculo en el repetidor y establecer la visibilidad según si el parámetro myURL está allí.

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

O lo que puede hacer es tener un método en el código subyacente que llame de nuevo a la PARAM "myURL".

E.g.

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

    return string.Empty; 
} 

y llamar ASPX

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

Nota: este es el código no probado, pero esta es la manera que suelo hacer este tipo de cosas.

+0

este debe ser el trabajo respuesta –

2

trate de añadir un runat="server" y luego añadir un bloque de script para el (nuevo) del lado del servidor propiedad visible:

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

Utilizaría el String.Format e incluiría el HTML como parte de la cadena. Es cierto que no es la pieza más bonito de código que se ha escrito, pero en mi opinión es la mejor opción:

Por ejemplo, la salida de voluntad por debajo de una etiqueta de anclaje si existe la propiedad Url, de lo contrario se dará salida a un palmo.

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

También puede llamar a su función pública en el interior de código detrás de archivo:

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