当页面呈现时,如何阻止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>"));
}
}
}
答案 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;
...您有时可以通过使用ASCII代码版本而不是HTML快捷方式解决此类问题:{{ 1}}