不要在下拉列表中显示HTML代码和实体

时间:2008-10-07 09:17:04

标签: asp.net

当我添加& nbsp;或者& eacute;对于listitem的文本值,它显示HTML实体的代码而不是结果(空格或é)。

我可以添加“物理”不间断空格或特殊字符,但我想尽可能避免这种情况。有时,存储在数据库中的数据是经过编码的,我不想在显示数据之前始终处理数据。

任何解决方案?

由于

编辑注释:之前的描述指出它是关于模拟树视图的下拉列表,但它只是一个例子;我不能也不想用其他任何东西替换下拉列表。

5 个答案:

答案 0 :(得分:6)

ListItems自动进行HtmlEncoded。

您可以事先对列表项进行Html解码,因此当它们是HtmlEncoded时,您将获得正确的字符:

DropDownList1.DataSource = new List<string> { Server.HtmlDecode("A&hellip;"), Server.HtmlDecode("B&nbsp;C") };
DropDownList1.DataBind();

答案 1 :(得分:1)

您可以将<optgroup>标记用于分层(即树状)下拉菜单。

<select>
    <optgroup label="Parent 1">
        <option>Child 1.1</option>
        <option>Child 1.2</option>
    </optgroup>
    <optgroup label="Parent 2">
        <option>Child 2.1</option>
        <option>Child 2.2</option>
    </optgroup>
</select> 

答案 2 :(得分:0)

标准下拉列表在表示树视图时非常差。

如果最高级别不可选,他们可以处理一个深度(参见optgroup元素[1]),但除此之外,我建议采用与嵌套一样多的常规列表(有序或无序)你需要(记住子列表进入其父列表中的列表项)并包括每个可选列表项的复选框或单选按钮。

然后可以添加一些JavaScript来操作类,以便在需要时创建下拉效果。

[1] Optgroup应该能够更深入,但是,IIRC,浏览器支持很糟糕。

答案 3 :(得分:0)

尝试使用ul(ol)并使用css。如果满足某些要求,则可以使用jquery更改样式(li具有value属性)

答案 4 :(得分:0)

问题中描述的问题不是我使用当前版本的ASP.NET看到的 - 当我尝试时,以下&ndash;都正确呈现:

    <asp:RadioButtonList ID="Visibility" runat="server">
        <asp:ListItem Value="public" Text="Public &ndash; All users"></asp:ListItem>
        <asp:ListItem Value="private">Private &ndash; Only you</asp:ListItem>
    </asp:RadioButtonList>