私はリピーター内の文字列値をチェックしようとしていますが、値がある場合はリンクを作成しますが、機能させることができないようです。 myUrlに値がある場合、リンクを表示します。
<%if( %> <%#Eval("myURL").ToString().Length > 0 %>
<a title="myTitle" target="_blank" href="<%# Eval("myURL") %>">my link</a>
<% } %>
誰も助けてくれますか?
このコードを試してください!!!
<%#Eval("myURL").ToString().Length > 0 ?
"<a title='myTitle' target='_blank' href='<%# Eval("myURL") %>'>my link</a>":""%>
私は個人的にそのような条件付きロジックをページで使用することを嫌います。
より良いと思う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これはテストされていないコードですが、これは私がこの種のことを通常行う方法です。
String.Formatを使用し、文字列の一部としてHTMLを含めます。確かに、これはこれまでに書かれたコードの中で最も近いものではありませんが、私の意見では、最良の選択肢です。
たとえば、以下は、プロパティrlが存在する場合はアンカータグを出力し、そうでない場合はスパンを出力します。
<%# string.Format(Eval("Url") != null ? "<a href=\"{0}\">{1}</a>" : "<span>{1}</span>", Eval("Url"), Eval("Text")) %>">
runat="server"
を追加してから、(新しい)サーバー側の表示可能なプロパティのスクリプトブロックを追加してください。
<a title="myTitle" target="_blank" href="<%# Eval("myURL") %>" runat="server" visible='<%#Eval("myURL").ToString().Length > 0 %>'>my link</a>
コードビハインドファイル内でパブリック関数を呼び出すこともできます。
<%# MyFunction(Eval("myURL").ToString().Length) %>