使用 Eval Boolean 为 asp.net 控件设置样式

Using Eval Boolean to set a style for an asp.net control

我有一个 asp:ListView 控件,其中包含一组图像,设置如下:

<asp:ListView ID="lvSliderPhotos" runat="server">
    <ItemTemplate>
        <asp:Image ID="imgSliderPhoto" runat="server"
            ImageUrl='<%# Eval("ThumbnailPath") %>' />
    </ItemTemplate>
</asp:ListView>

对于包含这些的我的数据库 table,我有一个名为 IsPublic 的字段,它存储一个布尔值。如果值为 false,如何将样式应用于 asp:Image 控件?

我基本上想要这样的东西:

<asp:Image ID="imgSliderPhoto" runat="server"
    ImageUrl='<%# Eval("ThumbnailPath") %>'
    Style='<if (!Eval("IsPublic") { set a style property }>' />

知道如何实现吗?

你可以在图片控件的CssClass属性里面查看IsPublic的值,设置成你想要的样式规则:

CssClass='<%# Convert.ToBoolean(Eval("IsPublic")) ? "public" : "private" %>'

完整示例:

  <head runat="server">
    <title></title>
    <style type="text/css">
        .public {
            border: 6px solid red;
        }

        .private {
            border: 6px solid black;
        }
    </style>
</head>
<body>
    <asp:Image ID="Image1" runat="server" />
    <form id="form1" runat="server">
        <asp:ListView ID="lvSliderPhotos" runat="server">
            <ItemTemplate>
                <asp:Image ID="imgSliderPhoto" runat="server"
                    ImageUrl='<%# Eval("ThumbnailPath") %>' CssClass='<%# Convert.ToBoolean(Eval("IsPublic")) ? "public" : "private" %>' />
            </ItemTemplate>
        </asp:ListView>
    </form>
</body>