我正在尝试检查转发器中的字符串值,如果它有值,则写一个链接,但似乎无法让它工作。如果myUrl中有值,那么我想显示链接。
<%if( %> <%#Eval("myURL").ToString().Length > 0 %>
<a title="myTitle" target="_blank" href="<%# Eval("myURL") %>">my link</a>
<% } %>
有人可以帮忙吗?
答案 0 :(得分:28)
试试这段代码!!!
<%#Eval("myURL").ToString().Length > 0 ?
"<a title='myTitle' target='_blank' href='<%# Eval("myURL") %>'>my link</a>":""%>
答案 1 :(得分:20)
我个人讨厌在页面中使用条件逻辑。
我认为有两种选择更好。您可以在转发器中使用超链接控件 - 并根据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()) %>
注意这是未经测试的代码,但这是我通常做这种事情的方式。
答案 2 :(得分:5)
我会使用String.Format并将HTML包含在字符串中。不可否认,这不是有史以来编写的最新代码,但在我看来,它是最好的选择:
例如,如果属性 Url 存在,则下面将输出锚标记,否则将输出范围。
<%# string.Format(Eval("Url") != null ? "<a href=\"{0}\">{1}</a>" : "<span>{1}</span>", Eval("Url"), Eval("Text")) %>">
答案 3 :(得分:3)
尝试添加runat="server"
,然后为(新)服务器端可见属性添加脚本块:
<a title="myTitle" target="_blank" href="<%# Eval("myURL") %>" runat="server" visible='<%#Eval("myURL").ToString().Length > 0 %>'>my link</a>
答案 4 :(得分:1)
这将有助于
How do I run an if statement in aspx?
http://forums.asp.net/t/1254412.aspx/1
http://forums.asp.net/t/1161705.aspx
答案 5 :(得分:0)
您也可以在代码隐藏文件中调用您的公共函数:
<%# MyFunction(Eval("myURL").ToString().Length) %>