#Eval if statement in repeater

I’m trying to check a string value inside a repeater, and if it has value then write a link, but can’t seem to get it to work. If there is a value in myUrl then I want to display the link.

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

Can anyone please help?

Answers:

Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.

Method 1

try this code !!!

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

Method 2

I personally hate using conditional logic like that in the page.

There are two options that I think are better. You could have a Hyperlink control in the repeater – and set the visibility depending on if the myURL param is there.

visibility='<% #Eval("myURL").ToString().Length > 0 %>'

OR what you can do is have a method on your code behind that you call back to with the “myURL” param.

E.g.

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

    return string.Empty;
}

And call in ASPX

<%# CreateURL(Eval("myURL").ToString()) %>

NB this is untested code but this is the ways I usually do this sort of thing.

Method 3

I would use the String.Format and include the HTML as part of the string. Admittedly, it’s not the neatest piece of code ever written, but in my opinion it’s the best option:

For example the below will output an anchor tag if the property Url exists, otherwise it will output a span.

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

Method 4

Try adding a runat="server" and then add a script block for the (new) server-side visible property:

 <a  title="myTitle" target="_blank" href="<%# Eval(" rel="nofollow noreferrer noopener" rel="nofollow noreferrer noopener"myURL") %>" runat="server" visible='<%#Eval("myURL").ToString().Length > 0 %>'>my link</a>

Method 5

this will help
How do I run an if statement in aspx?
http://forums.asp.net/t/1254412.aspx/1
http://forums.asp.net/t/1161705.aspx

Method 6

You can also call your public function inside code behind file:

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


All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0

0 0 votes
Article Rating
Subscribe
Notify of
guest

0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x