Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用带有3个URL的C#WebForms asp:BulletedList_C#_Webforms - Fatal编程技术网

使用带有3个URL的C#WebForms asp:BulletedList

使用带有3个URL的C#WebForms asp:BulletedList,c#,webforms,C#,Webforms,我需要继续使用列表框来实现这一点,因为控件作为列表框存在许多其他依赖项 最终,我希望每个列表项由3个不同的URL组成,因此: 其中包括: <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>&l

我需要继续使用列表框来实现这一点,因为控件作为列表框存在许多其他依赖项

最终,我希望每个列表项由3个不同的URL组成,因此:

其中包括:

<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>
这意味着生成的HTML被“破坏”,URL不起作用。所以我的问题是:

如何继续使用现有的列表框(即asp:BulletedList),但为项目提供文本,以便它生成有效的HTML,以便我可以有3个单独的URL


在将字符串添加到listItem.Text之前,我已经尝试过对字符串进行HTML编码,但这没有什么区别。

我认为这里不需要用户控件-您不使用任何服务器端组件,您只是生成标记。为什么不在.aspx页面中执行此操作

<ul>
<% foreach (TableDashboardDashboardDtoBase userDashboard in userDashboards.Dashboards)
{
%>
  <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>

谢谢RGraham,但不幸的是,正如我在文章顶部所说的,“我需要继续使用列表框来完成此操作,因为控件上还有许多其他依赖项是列表框。”我需要将此保留为列表框。@TheEdge抱歉,遗漏了这一点。但是
ListItem
类不允许HTML作为文本,也不允许子控件。在我的第一个示例中添加一个
runat=server
,您应该能够在服务器端使用它,只需进行最少的代码重构
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);
    }
}
&lt;&lt;a href=&quot;#&quot; id=&quot;...
<ul>
<% foreach (TableDashboardDashboardDtoBase userDashboard in userDashboards.Dashboards)
{
%>
  <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>
<asp:Repeater ID="Repeater1" runat="server">
    <HeaderTemplate><ul></HeaderTemplate>
    <ItemTemplate><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></ItemTemplate>
    <FooterTemplate></ul></FooterTemplate>
</asp:Repeater>
Repeater1.DataSource = userDashboards.Dashboards
Repeater1.DataBind()