#Eval if оператор в репитере - PullRequest
       9

#Eval if оператор в репитере

22 голосов
/ 15 февраля 2012

Я пытаюсь проверить строковое значение внутри повторителя, и если оно имеет значение, напишите ссылку, но, похоже, не получается заставить его работать. Если в myUrl есть значение, я хочу отобразить ссылку.

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

Может кто-нибудь помочь, пожалуйста?

Ответы [ 6 ]

28 голосов
/ 15 февраля 2012

попробуйте этот код !!!

<%#Eval("myURL").ToString().Length > 0 ?
"<a  title='myTitle' target='_blank' href='<%# Eval("myURL") %>'>my link</a>":""%>
20 голосов
/ 15 февраля 2012

Лично я ненавижу использовать условную логику, подобную той, что на странице.

Есть два варианта, которые я считаю лучше. Вы можете иметь элемент управления Hyperlink в репитере и устанавливать видимость в зависимости от того, есть ли параметр myURL.

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

ИЛИ что вы можете сделать, это иметь метод в вашем коде, к которому вы обращаетесь с параметром "myURL".

1008 * Е.Г. *

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

    return string.Empty;
}

и позвонить в ASPX

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

Примечание: это непроверенный код, но я обычно так поступаю.

5 голосов
/ 26 июля 2013

Я бы использовал String.Format и включил HTML как часть строки.Следует признать, что это не самый аккуратный фрагмент кода, когда-либо написанный, но, на мой взгляд, это лучший вариант:

Например, приведенный ниже выводит тег привязки, если свойство Url существует, в противном случаевыведет диапазон.

<%# string.Format(Eval("Url") != null ? "<a href=\"{0}\">{1}</a>" : "<span>{1}</span>", Eval("Url"), Eval("Text")) %>">
3 голосов
/ 15 февраля 2012

Попробуйте добавить runat="server", а затем добавьте блок сценария для (нового) видимого на стороне сервера свойства:

 <a  title="myTitle" target="_blank" href="<%# Eval("myURL") %>" runat="server" visible='<%#Eval("myURL").ToString().Length > 0 %>'>my link</a>
1 голос
/ 15 февраля 2012
0 голосов
/ 15 февраля 2017

Вы также можете вызвать вашу публичную функцию внутри кода, стоящего за файлом:

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