DataBinding:'System.Web.SiteMapNode'不包含属性

时间:2017-03-13 19:03:29

标签: c# asp.net data-binding web.sitemap

我想将glyphicons添加到我使用<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'的属性。

如果没有glyphicon实现,其他一切工作正常。

我知道您的站点地图节点中可以有自定义属性,因为有人在此StackOverflow post中实现了该属性。

所以我必须在客户实施中做错事。任何人都可以用正确的方式帮助我实现这个目标吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

经过一番研究后,我发现您可以通过以下方式访问自定义属性:

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