Привязка данных: "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" />