我需要继续使用列表框来执行此操作,因为作为列表框的控件还有许多其他依赖项。
最终,我希望每个列表项都包含 3 个不同的 URL,因此:
这将是 HTML:
<ul>
<li><a href="http://www.google.com">Url1</a><a href="http://www.yahoo.com">Url2</a><a href="http://www.bing.com">Url3</a></li>
</ul>
所以在我维护的 ASPX 页面中已经有:
<asp:BulletedList ID="lstDashboards" runat="server" DisplayMode="Text"</asp:BulletedList>
在后面的代码中,我有以下内容来填充列表:
private void GuiSideMenuBuild(Int64 aUserId)
{
//Always clear any dashboards
lstDashboards.Items.Clear();
//Get the dashboards from the database
DashboardsForUserGetDto userDashboards = DashboardBL.Instance.DashboardsForUserGet(Convert.ToInt32(aUserId));
const string HREF_DASHBOARD_EDIT = "<a href=\"#\" id=\"edit-dashboard-link\" class=\"dialog-link\">Edit...</a>";
const string HREF_DASHBOARD_DELETE = "<a href=\"#\" id=\"delete-dashboard-link\" class=\"dialog-link\">Delete...</a>";
foreach (TableDashboardDashboardDtoBase userDashboard in userDashboards.Dashboards)
{
string listItemText = userDashboard.Title;
if (userDashboard.DashboardId == DashboardId)
listItemText += HREF_DASHBOARD_EDIT + HREF_DASHBOARD_DELETE;
ListItem listItem = new ListItem
{
Text = listItemText,
Value = Convert.ToString(userDashboard.DashboardId),
Selected = userDashboard.DashboardId == DashboardId
};
lstDashboards.Items.Add(listItem);
}
}
但是,控件生成的 HTML 已经转义了所有提供的 HTML,因此我最终得到如下内容:
<<a href="#" id="...
这意味着生成的 HTML 已“损坏”并且 URL 不起作用。所以我的问题是:
我怎样才能继续使用现有的列表框(即 asp:BulletedList),但为项目提供文本,以便它生成有效的 HTML,以便我可以拥有 3 个单独的 URL?
在将字符串添加到 listItem.Text 之前,我已经尝试过对字符串进行 HTML 编码,但这没有区别。