2012-02-15 85 views
18

我試圖檢查一箇中繼器內的字符串值,如果它有值然後寫一個鏈接,但似乎無法讓它工作。如果myUrl中有值,那麼我想顯示鏈接。#Eval if repeater repeater

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

任何人都可以請幫忙嗎?

回答

25

試試這個代碼!!!

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

工作的偉大 - 非常感謝! – Wildcat 2012-02-15 09:29:45

+10

技術上正確,但真正淫穢的外觀.. – 2012-02-15 12:05:35

+1

我希望很多人從不使用條件聲明......多數民衆贊成的問題... – Madhu 2012-02-16 04:30:58

19

我個人討厭在頁面中使用條件邏輯。

有兩種選擇,我認爲更好。您可以在中繼器中使用超鏈接控制 - 並根據myURL參數是否存在來設置可見性。

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

或者你可以做的是有你的「myURL」參數回調背後,你的代碼的方法。

E.g.

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

    return string.Empty; 
} 

並調用ASPX

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

NB這是未經測試的代碼,但是這是我平時做這樣的事情的方式。

+0

這應該是答案 – 2017-09-22 13:54:14

2

嘗試添加runat="server",然後添加一個腳本塊(新的)服務器端的Visible屬性:

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

我會使用String.Format並將HTML作爲字符串的一部分。誠然,這不是最巧妙的一段代碼寫過,但在我看來這是最好的選擇:

例如下面將輸出一個錨標記,如果該屬性網址存在,否則它會輸出一個跨度。

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

您也可以打電話給你的公共職能裏面的代碼隱藏文件:

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