Как отобразить изображение по умолчанию, если Eval ("Thumbnail") равен null - asp .net - PullRequest
2 голосов
/ 22 ноября 2011

Я пытаюсь загрузить миниатюру по умолчанию, если пользователь не загрузил миниатюру для своей новостной статьи. Можете ли вы помочь?

Сначала я попробовал, но это не сработало:

<%#Eval("Thumbnail")!=null ? Eval("Thumbnail"):"~/Images/test.jpg"%>" alt="<%#Eval("Title") %>"

У меня есть следующий код в репитере:

         <asp:Repeater ID="rptRotator" runat="server">
                    <HeaderTemplate>
                        <ul>
                    </HeaderTemplate>
                    <ItemTemplate>
                        <li>
                            <div class="widgetContent">
                                <img class="thumbNail" src="<%#Eval("Thumbnail") %>" alt="<%#Eval("Title") %>" />
                                <h4 style="width: 155px;">
                                    <a href="/news/<%#Eval("PublicationDate","{0:yyyy/MM/dd}")%>/<%#Eval("UrlName") %>">
                                        <%#Eval("Title") %></a></h4>
                                <div class="clear">
                                </div>
                                <span class="newsDate">
                                    <%# Eval("PublicationDate", "{0:dd MMMM yyyy}")%></span>
                                <div class="widgetTextSummary">
                                    <p>
                                        <%#Eval("Summary").ToString().Substring(0,60)%>...</p>
                                </div>
                            </div>
                        </li>
                    </ItemTemplate>
                    <FooterTemplate>
                        </ul></FooterTemplate>
                </asp:Repeater>

Ответы [ 4 ]

2 голосов
/ 22 ноября 2011

Простой способ сделать это - создать публичный метод, который вы можете использовать, чтобы определить, является ли элемент данных нулевым или нет, и установить его соответствующим образом.Таким образом, вам не придется помещать весь свой код в строку.Затем в вашем коде должно быть что-то подобное в vb .net:

Public Function ProcessDataItem(myDataItemValue As Object) As String
    If myDataItemValue Is Nothing Then Return "~/Images/test.jpg"

    Return myDataItemValue.ToString()
End Function

И затем вызвать его в повторителе:

<%# ProcessDataItem(Eval("Title")) %>" alt="<%#Eval("Title") %>"

Также я рекомендую использовать Container.DataItemвместо Eval, поскольку это создает меньше накладных расходов.Так что в итоге это будет примерно так:

<%# ProcessDataItem(Container.DataItem("Title")) %>" alt="<%#Container.DataItem("Title") %>"
0 голосов
/ 12 декабря 2014
<asp:Image ID="imgProd" runat="server" src="<%#Eval('Thumbnail')" 
onerror="this.onload = null; this.src='ImageurlORAnyImageHere.jpg';"/>
0 голосов
/ 23 ноября 2011

Должно работать одно из следующих:

<%# Eval("Thumbnail") ?? "/images/default.png" %>

<%# Eval("Thumbnail") == DBNull.Value ? "/images/default.png" : Eval("Thumbnail") %>
0 голосов
/ 22 ноября 2011

Как насчет дать вашей собственности Thumbail значение по умолчанию?

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

...