转发器中的#Eval if语句

Wil*_*cat 23 asp.net eval

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

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

有人可以帮忙吗?

Mad*_*ela 29

试试这个代码!!!

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


Dav*_*ker 21

我个人讨厌在页面中使用条件逻辑.

我认为有两种选择更好.您可以在转发器中使用超链接控件 - 并根据myURL参数是否存在来设置可见性.

visibility='<% #Eval("myURL").ToString().Length > 0 %>' 
Run Code Online (Sandbox Code Playgroud)

或者你可以做的是在你的代码背后有一个方法,你用"myURL"参数回调.

例如

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

    return string.Empty;
}
Run Code Online (Sandbox Code Playgroud)

并在ASPX中调用

<%# CreateURL(Eval("myURL").ToString()) %>
Run Code Online (Sandbox Code Playgroud)

注意这是未经测试的代码,但这是我通常做这种事情的方式.


Kev*_*gia 5

我会使用String.Format并将HTML包含在字符串中.不可否认,这不是有史以来编写的最新代码,但在我看来,它是最好的选择:

例如,如果属性Url存在,则下面将输出锚标记,否则将输出span.

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