Asp.net 如果数据库不为null,则在中继器中有条件地显示图像

Asp.net 如果数据库不为null,则在中继器中有条件地显示图像,asp.net,asprepeater,Asp.net,Asprepeater,我有一个中继器,包括图像。然而,有一个形象,可能不是在所有的促销在这个重复 <div class="promo"> <h2><%# ((Promotion)Container.DataItem).Title %></h2> <p><img src="/Uploads/<%# ((Promotion)Container.DataItem).Image %>" alt="" class="promoImg"

我有一个中继器,包括图像。然而,有一个形象,可能不是在所有的促销在这个重复

<div class="promo">
    <h2><%# ((Promotion)Container.DataItem).Title %></h2>
    <p><img src="/Uploads/<%# ((Promotion)Container.DataItem).Image %>" alt="" class="promoImg" /><%# ((Promotion)Container.DataItem).Description %></p>
    <p><em><%# ((Promotion)Container.DataItem).Restrictions %></em></p>
</div>

“alt=”“class=“promoImg”/


有人能告诉我,如果条目没有空字段,如何进行唯一显示吗?

这应该可以做到:

对于C#Net:


“alt=”未找到图像“class=”promoImg“/>


我添加了一些jquery来检查页面上的每个图像,以确保有一个与该促销相关的图像:

$(document).ready(function () {

$('.promoImg').each(function (index) {

    if ($(this).attr('src') == "/Uploads/") {
        $(this).hide();
    }
});
}))


我仍然对服务器端解决方案感兴趣

我认为您可以使用panel来实现这一点

  <div class="promo">
<h2><%# ((Promotion)Container.DataItem).Title %></h2>

<asp:Panel ID="pnlImage" runat="server">

<p><img src="/Uploads/<%# ((Promotion)Container.DataItem).Image %>" alt="" class="promoImg" /><%# ((Promotion)Container.DataItem).Description %></p>

</asp:Panel>

<p><em><%# ((Promotion)Container.DataItem).Restrictions %></em></p>
当面板不可见时,它将不会被渲染。

为什么不使用

<% if()%> 


判断是否存在图像源?如果没有,则没有响应。因此我们可以保存更多内容

我更喜欢在服务器端做一些事情,因此,我的建议是:

将事件处理程序添加到中继器

 <asp:Repeater ID="myRpt" runat="server" onitemdatabound="myRpt_ItemDataBound" >
    <ItemTemplate>
        <div class="promo">
            <h2>
                <%# ((Promotion)Container.DataItem).Title %></h2>
            <p>
                <asp:Image ID="imgTest" CssClass="promoImg" ImageUrl="" runat="server" />
                <%# ((Promotion)Container.DataItem).Description %></p>
            <p>
                <em>
                    <%# ((Promotion)Container.DataItem).Restrictions %>
                </em>
            </p>
        </div>
    </ItemTemplate>
</asp:Repeater>

它会成功的。如果不起作用,请告诉我。

我应该澄清图像列只存储字符串文件名。在这个解决方案中,似乎只有src属性会改变。我想一起删除img标记你使用的是VB.Net还是C#.Net?C#-我只是在页面中添加了一些jquery:检查每个图像,如果attr src为null,则隐藏图像。我也对服务器端解决方案持开放态度。needToShowImage定义在哪里?您写道:“有一个映像可能不会出现在所有的促销活动中”,那么,请告诉我?不需要显示图像的规则是什么。如果该字段在列中没有显示文件名,则图像不需要显示。
<% if()%> 
 <asp:Repeater ID="myRpt" runat="server" onitemdatabound="myRpt_ItemDataBound" >
    <ItemTemplate>
        <div class="promo">
            <h2>
                <%# ((Promotion)Container.DataItem).Title %></h2>
            <p>
                <asp:Image ID="imgTest" CssClass="promoImg" ImageUrl="" runat="server" />
                <%# ((Promotion)Container.DataItem).Description %></p>
            <p>
                <em>
                    <%# ((Promotion)Container.DataItem).Restrictions %>
                </em>
            </p>
        </div>
    </ItemTemplate>
</asp:Repeater>
protected void myRpt_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType ==     ListItemType.AlternatingItem)
        {
            Image imgTest = (Image)e.Item.FindControl("imgTest");
            Promotion pActual = (Promotion)e.Item.DataItem;
            bool needToShowImage = !String.IsNullOrEmpty(pActual.Image)

            if (needToShowImage)
            {                    
                imgTest.ImageUrl = "Uploads/" + pActual.Image;
            }
            else
            {
                imgTest.Visible = false;
            }                
        }
    }