Привязка данных: "System.Web.SiteMapNode" не содержит свойство

Я хочу добавить глифы в мое пользовательское меню, созданное с помощью <asp:Repeater> и web.sitemap файл в качестве источника данных.

Вот что я попробовал:

<ul class="nav navbar-nav">
    <asp:Repeater runat="server" ID="rptMenu" DataSourceID="smdsMain">
        <ItemTemplate>
            <li>
                <a runat="server" href='<%# Eval("url") %>'>
                    <span class='glyphicon glyphicon-<%# Eval("glyphicon") %>'></span>
                        <%# Eval("title") %>
                </a>
            </li>
        </ItemTemplate>
    </asp:Repeater>
</ul>
<asp:SiteMapDataSource ID="smdsMain" runat="server" ShowStartingNode="false" SiteMapProvider="XmlSiteMapProvider" />

И вот пример узла в моем web.sitemap:

<siteMapNode url="~/Secure/Home/Default" title="Home" description="Home" glyphicon="home" />

Вот ошибка, которую я получаю.

System.Web.HttpException: DataBinding: 'System.Web.SiteMapNode' не содержит свойства с именем 'glyphicon'.

У меня все остальное работает нормально без реализации глификона.

Я знаю, что возможно иметь собственный атрибут в узлах вашей карты сайта, потому что кто-то реализовал его в этом посте Stackru.

Поэтому я, должно быть, делаю что-то не так в своей реализации клиента Может кто-нибудь помочь мне с правильным способом реализации этого?

Спасибо!

1 ответ

Решение

После некоторых исследований я обнаружил, что вы можете получить доступ к пользовательским атрибутам следующим образом:

<%# Eval("[attributeName]") %>

Используя эти знания, я реализовал свой код следующим образом, чтобы он заработал:

<ul class="nav navbar-nav">
    <asp:Repeater runat="server" ID="rptMenu" DataSourceID="smdsMain">
        <ItemTemplate>
            <li>
                <a runat="server" href='<%# Eval("url") %>'>
                    <span class='glyphicon glyphicon-<%# Eval("[glyphicon]") %>'></span>
                        <%# Eval("title") %>
                </a>
            </li>
        </ItemTemplate>
    </asp:Repeater>
</ul>
<asp:SiteMapDataSource ID="smdsMain" runat="server" ShowStartingNode="false" SiteMapProvider="XmlSiteMapProvider" />
Другие вопросы по тегам