2017-03-13 2 views
0

Ich möchte Glyphicons zu meinem benutzerdefinierten Menü hinzufügen, das ich mit einer <asp:Repeater> und einer web.sitemap Datei als Datenquelle erstellt habe. HierDataBinding: 'System.Web.SiteMapNode' enthält keine Eigenschaft

ist, was ich versucht habe:

<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" /> 

Und hier ist ein Beispiel für einen Knoten in meinem web.sitemap:

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

Hier ist der Fehler, den ich bekommen.

System.Web.HttpException: Databinding: 'System.Web.SiteMapNode' enthält keine Eigenschaft mit dem Namen 'glyphicon'.

Ich alles andere funktioniert gut ohne die Glyphon-Implementierung.

Ich weiß, dass es möglich ist, ein benutzerdefiniertes Attribut in Ihren Sitemap-Knoten zu haben, weil jemand es in diesem StackOverflow post implementiert hat.

Also muss ich in meiner Kundenimplementierung etwas falsch machen. Kann mir hier jemand helfen, der dies richtig implementiert?

Danke!

Antwort

0

Nach einigen Recherchen habe ich festgestellt, dass Sie benutzerdefinierte Attribute auf diese Weise zugreifen können:

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

dieses Wissen verwenden ich so in meinen Code implementiert haben, um es arbeiten:

<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" /> 
Verwandte Themen