順序付けされていないリストとしてレンダリングされる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;
}
}
}