在重复器中使用 #Eval if 语句

25

我正在尝试检查重复器中的字符串值,如果有值,则编写一个链接,但似乎无法使其正常工作。 如果myUrl中有值,则要显示链接。

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

有人可以帮忙吗?

6个回答

29

尝试这段代码!!!

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

不错的解决方案 - 关于看起来淫秽的评论纯属虚荣。 - Josh Wheelock

24

我个人不喜欢在页面中使用那样的条件逻辑。

有两个选项我认为更好。你可以在重复器中使用一个超链接控件,并根据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()) %>

注意:这段代码未经测试,但这是我通常处理此类问题的方式。


这是答案 - Casey Crookston

5
我会使用String.Format并将HTML作为字符串的一部分包含在内。诚然,这不是有史以来最整洁的代码,但在我看来这是最好的选择:
例如,如果属性Url存在,则以下内容将输出一个锚点标记,否则将输出一个span标记。
<%# string.Format(Eval("Url") != null ? "<a href=\"{0}\">{1}</a>" : "<span>{1}</span>", Eval("Url"), Eval("Text")) %>">

1
runat="server" visible='<%# (Eval("YourProperty") ?? "").ToString().Length > 0 %>' 运行良好。 - Sahib Khan

3
尝试添加runat="server",然后为(新的)服务器端可见属性添加脚本块:
 <a  title="myTitle" target="_blank" href="<%# Eval("myURL") %>" runat="server" visible='<%#Eval("myURL").ToString().Length > 0 %>'>my link</a>


0

你也可以在代码后台文件中调用你的公共函数:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接