阻止ASP.NET在输出上编码字符串

时间:2010-05-11 19:15:49

标签: asp.net encoding

当页面呈现时,如何阻止ASP.Net对列表项中的锚标记进行编码?

我有一组对象。每个对象都有一个link属性。我做了一个foreach并尝试输出BulletedList中的链接,但ASP编码了所有链接。

有什么想法吗?谢谢!

这是令人讨厌的代码片段。当用户选择专业时,我使用SelectedIndexChange事件清除并添加到BulletedList的链接:

if (SpecialtyList.SelectedIndex > 0)
    {
        PhysicianLinks.Items.Clear();

        foreach (Physician doc in docs)
        {
            if (doc.Specialties.Contains(SpecialtyList.SelectedValue))
            {
                PhysicianLinks.Items.Add(new ListItem("<a href=\"" + doc.Link + "\">" + doc.FullName + "</a>"));    
            }
        }
    }

2 个答案:

答案 0 :(得分:6)

您可以使用转发器替换项目符号列表

而不是PhysicianLinks.Items.Add(new ListItem("<a href=\"" + doc.Link + "\">" + doc.FullName + "</a>"));,将doc.Link添加到List对象并使用它来绑定转发器。您可以在转发器itemtemplate中包含所需的任何html

这样的东西
List<string> docLinks=new List<string>();
    if (SpecialtyList.SelectedIndex > 0)
        {


            foreach (Physician doc in docs)
            {
                if (doc.Specialties.Contains(SpecialtyList.SelectedValue))
                {
                  docLinks.add(doc.Link) ;
               }
            }
            Repeater1.DataSource=docLinks;
            Repeater1.DataBind();
        }

在ASPX中

<ul>
        <asp:Repeater ID="Repeater1" runat="server">
            <ItemTemplate>
            <li><a href="<%# Container.DataItem.ToString()%>"><%# Container.DataItem.ToString()%></a></li>
            </ItemTemplate>
        </asp:Repeater>
</ul>

答案 1 :(得分:0)

给我们举个例子......对象的确切类型/值以及呈现给HTML的内容。

如果您正在谈论ASP.NET将&amp;更改为&amp;amp; ...您有时可以通过使用ASCII代码版本而不是HTML快捷方式解决此类问题:{{ 1}}