2012-02-15 19 views
18

リピータ内で文字列値をチェックしようとしていますが、値があればリンクを書きますが、動作させるように見えません。 myUrlに値がある場合、リンクを表示したいと思います。リピータの#Eval if文

<%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

+10

技術的に正しいが、実際にはわいせつなもの.. –

+1

多くの人が条件文を使わないことを願っています...問題を起こしています... – Madhu

19

私は個人的にページのような条件付きロジックを使用して嫌いです。

私には良い選択肢が2つあります。リピーターにハイパーリンクコントロールを設定し、myURLパラメーターがあるかどうかに応じて可視性を設定できます。

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

または、「myURL」パラメータを使用してコールバックするコードのメソッドを使用することができます。

など。

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

    return string.Empty; 
} 

そして、ASPX

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

NBで、これは未テストコードですが、これは、私は通常、この種のものを行う方法で呼び出します。

+0

これは素晴らしい答え –

2

トライを支援して、(新しい)サーバー側可視プロパティのスクリプトブロックを追加します。

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

私はString.Formatを使用し、その文字列の一部としてHTMLを含めます。確かに、それは今までに書かれたコードのneatest作品ではないのですが、私の意見ではそれが最良の選択肢だ:

例えば下記の意志出力アンカータグプロパティのURLが、それ以外の場合の出力は以下となりスパンが存在する場合。

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

また、ファイルの後ろにコード内であなたのパブリック関数を呼び出すことができます。

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