DataList,<ItemTemplate>中的条件语句?

Kev*_*vin 3 asp.net datalist

我试图在ASP.NET 3.5中执行以下操作.基本上,我将LINQDataSource绑定到DataList.有一个名为"Deleted"的属性,如果是,我想显示不同的标记.以下代码抛出错误:

<asp:DataList runat="server">
    <ItemTemplate>
        <% If CBool(Eval("Deleted")) Then%> 
            ...
        <% Else%>
            ...
        <% End If%>
    </ItemTemplate>
</asp:DataList>
Run Code Online (Sandbox Code Playgroud)

这可能吗?如果没有,有哪些替代方案?

Ben*_*old 11

我可能建议保持代码前端精简并通过函数结果写出所需的文本:

<asp:DataList runat="server">
    <ItemTemplate>
         <%# GetText(Container.DataItem) %>
    </ItemTemplate>
</asp:DataList>
Run Code Online (Sandbox Code Playgroud)

代码隐藏:

protected static string GetText(object dataItem)
{        
    if (Convert.ToBoolean(DataBinder.Eval(dataItem, "Deleted"))
        return "Deleted";

    return "Not Deleted";
}
Run Code Online (Sandbox Code Playgroud)

我希望它有所帮助.


Adr*_*ark 5

作为解决方法的一个选择是使用面板.

<asp:DataList runat="server">
    <ItemTemplate>
        <asp:Panel Visible="<%# Eval("Deleted") %>">
            ...(deleted content here)...
        </asp:Panel>
        <asp:Panel Visible="<%# Not Eval("Deleted") %>">
            ...(other content here)...
        </asp:Panel>
    </ItemTemplate>
</asp:DataList>
Run Code Online (Sandbox Code Playgroud)