我有一个服务器控件,它包装了一个呈现为无序列表的 BulletedList。
我希望能够将 ListItem 文本中的 HTML 标记呈现为 HTML(不像现在那样转义)。
我开始认为这是不可能的。我在这里看到了几个类似的问题,但他们的答案都涉及在 aspx 页面中使用例如中继器,而我没有。我知道某些控件具有不同的属性来按字面呈现或转义内容,例如 Text/InnerHTML,但我找不到 BulletedList 的任何类似可能性。
肯定是有可能的...
这是使用我的服务器控件的代码中的代码(list
)
protected void RenderItem(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item ||
e.Item.ItemType == ListItemType.AlternatingItem)
{
e.Item.Controls.Add(new LiteralControl("<li >"));
Relation rel = (Relation)e.Item.DataItem;
// rel.List is the control containing the BulletedList
MyList list = rel.List;
e.Item.Controls.Add(list);
e.Item.Controls.Add(new LiteralControl("</li>"));
}
}
这是我的服务器列表控件的相关部分:
public class MyList : Control, INamingContainer
{
private readonly HyperLink _showAllLink = new HyperLink { NavigateUrl = "javascript:void(0);", Visible = false };
private readonly BulletedList _list = new BulletedList();
public ListItemCollection Items
{
get
{
return _list.Items;
}
}
}