2012-02-15 16 views
18

Próbuję sprawdzić wartość ciągu wewnątrz repeatera, a jeśli ma wartość, to wpisz link, ale nie może go uruchomić. Jeśli w myUrl znajduje się wartość, chcę wyświetlić link.#Eval jeśli instrukcja w repeaterie

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

Czy ktoś może pomóc?

Odpowiedz

25

Try This kod !!!

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

wielki - wielkie dzięki! – Wildcat

+10

Technicznie poprawne, ale naprawdę nieprzyzwoicie wyglądające ... –

+1

Mam nadzieję, że wiele osób nigdy nie używa instrukcji warunkowych ... to jest problem ... – Madhu

19

Ja osobiście nienawidzę za pomocą logiki warunkowej w ten sposób na stronie.

Są dwie opcje, które moim zdaniem są lepsze. Możesz mieć kontrolę Hiperlink w repeateru - i ustawić widoczność w zależności od tego, czy istnieje parametr myURL.

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

ALBO co możesz zrobić, to mieć metodę na swoim kodzie, za którą dzwonisz z powrotem z parametrem "myURL".

E.g.

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

    return string.Empty; 
} 

i wezwać ASPX

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

NB to jest kod niesprawdzone ale to sposoby zazwyczaj robię tego rodzaju rzeczy.

+0

ten powinien być dziełem odpowiedź –

2

Spróbuj dodać runat="server" a następnie dodać blok skryptu dla (nowy) po stronie serwera właściwość Visible:

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

Chciałbym użyć String.Format i dołączyć HTML jako część ciągu. Trzeba przyznać, że nie jest neatest kawałek kodu kiedykolwiek napisane, ale moim zdaniem jest to najlepsza opcja:

Na przykład poniżej wyjście wola tag kotwicy, jeżeli nieruchomość Url istnieje, w przeciwnym razie będzie to wyjście rozpiętość.

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

Można również skontaktować się funkcję publiczną wewnątrz kod związany z pliku:

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