图像源是一个eval,但如果eval为空,我需要它完全消失

时间:2014-04-04 17:04:30

标签: c# asp.net

我在C#页面上有这个代码(基于网络的商店):

<asp:TemplateField HeaderText="" HeaderStyle-Width="65" Visible="true">
    <ItemStyle HorizontalAlign="Left" />
    <HeaderStyle HorizontalAlign="Left" CssClass="columnHeader gradient" ForeColor="Black" />
    <ItemTemplate>        
        <img src='<%#GetSecureThumbnailUrl(Eval("Product"))%>' width="65px" />
    </ItemTemplate>
</asp:TemplateField>

GetSecureThumbnailUrl是这样的:

public string GetSecureThumbnailUrl(object product)
{
    string secureUrl;

    Product this_product = (Product)product;
    if (this_product != null)
    {
        secureUrl = this_product.ThumbnailUrl.Replace("http:", "https:");
        return (secureUrl);
    }
    else
    {
        return("");
    }
}

我的问题是:该网页的<img>代码没有有效的图片来源,因此会显示为损坏的图片。

我的问题是:如果GetSecureThumbnailUrl解析为“”返回,如何让img完全消失?

因为它在模板中,所以我不清楚......虽然我觉得它应该是。

谢谢!
吉姆

1 个答案:

答案 0 :(得分:1)

您可以运行此方法两次 - 一次用于源链接本身,另一次用于可见性检查:

<img src='<%#GetSecureThumbnailUrl(Eval("Product"))%>'
     width="65px"
     runat="server"
     Visible='<%#GetSecureThumbnailUrl(Eval("Product")) != null%>' />

或者您可以专门为可见性定义一个简化函数:

public string ShowThumbnail(object product)
{
    string secureUrl;

    Product this_product = (Product)product;
    return (this_product != null)
}


<img src='<%# GetSecureThumbnailUrl(Eval("Product")) %>'
     width="65px"
     runat="server"
     Visible='<%# ShowThumbnail(Eval("Product")) %>' />