转发器中的#Eval if语句

时间:2012-02-15 08:16:57

标签: asp.net eval

我正在尝试检查转发器中的字符串值,如果它有值,则写一个链接,但似乎无法让它工作。如果myUrl中有值,那么我想显示链接。

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

有人可以帮忙吗?

6 个答案:

答案 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)

答案 5 :(得分:0)

您也可以在代码隐藏文件中调用您的公共函数:

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