使用html标签环绕Eval

时间:2012-10-05 08:22:13

标签: c# asp.net html concatenation

请帮助!!我一直在寻找这个好几个小时,但也许解决方案是如此明显我完全忽视它:(

我有一个绑定到sql表的listview。该表包含一组仅包含“T”或NULL值的字段,但最后两个字段包含用户注释的自由类型文本。

对于T / NULL值 - 列表视图已配置为不显示空单元格,并且在存在“T”值的情况下,它将显示自定义文本并为下一项创建换行符。这种语法正是如此:

<asp:Label ID="LymeLabel" runat="server" Text='<%# Eval("Lyme","Lyme Disease<br />") %>' />

但是,我希望最后两个字段(自由类型文本)以段落样式显示,并在Eval语句周围添加段落标记。标签必须构成Eval的一部分,以便在单元格为空时它们不会呈现空格。我的想法是这样做,但它不起作用 - 空白出现在任何一种方式:

<asp:Label ID="OtherCommentLabel" runat="server" Text='<%# "<p>"+Eval("OtherComment")+"</p>" %>' />

我猜“”+ + +“”并不关心中间是什么内容......但是如何解决?必须有一个非常简单的解决方案,我觉得非常愚蠢甚至问这个。有什么建议吗?

2 个答案:

答案 0 :(得分:3)

根据说明,您根本不需要asp:Label。为什么不将Eval()包裹在P代码中?

<p><%# Eval("Lyme","Lyme Disease") %></p>

即使标签有效,您也不希望得到标记(标签内的段落没有意义)。

如果项目为空,要处理显示/隐藏,您可以执行以下操作:

<ItemTemplate>
    <p runat="server" visible='<%#!string.IsNullOrEmpty(Eval("OtherComment"))%>'>
        <%# Eval("Lyme","Lyme Disease") %>
    </p>
</ItemTemplate>

答案 1 :(得分:2)

白色空间将显示,因为p不是Eval的一部分; <p>Eval()</p>

不确定是否优雅,但您可以将Eval包装在方法中:

public string ParagraphIfData(string input)
{ 
    if(!string.IsNullOrEmpty(input))
        return "<p>" + input + "</p>";
    return "";
}

然后:

<%# ParagraphIfData(Eval("Lyme","Lyme Disease")) %>