asp.net站点地图改变运行时

时间:2011-08-24 12:55:40

标签: asp.net sitemap

我有一个asp.net网站,其中包含不同的用户类型,如admin,注册用户。每种用户类型都有不同的菜单选项。

我为所有类型的用户创建了一个公共母版页,但为不同的用户类型设计了不同的站点地图文件。

我要做的是,根据用户类型登录后,站点地图应在母版页中更改。

这是我在母版页面加载中尝试的代码。它显示我错误

**The SiteMapProvider 'Principal.sitemap' cannot be found.**

我尝试使用和不使用.sitemap扩展名。 (我有principal.sitemap和其他站点地图)

    protected void Page_Load(object sender, EventArgs e)
    {
        if (Session["usertype"] == null)
        {
            Response.Redirect("loginpage.aspx");
            return;
        }

        String usertype = Session["usertype"].ToString();

        if (usertype == "Principal")
        {
            SiteMapDataSource1.SiteMapProvider = "Principal.sitemap";
        }
        else if (usertype == "Administrator")
        {

            //SiteMapDataSource1.SiteMapProvider = "Administrator";
        }
        else if (usertype == "Student")
        {
            SiteMapDataSource1.SiteMapProvider = "Student";

        }
        foo.DataBind(); 
}

Here is my Master Page aspx code part.

 <asp:SiteMapDataSource  ID="SiteMapDataSource1" ShowStartingNode="false" runat="server" />
                <ul id="cssmenu1">
                    <li><a id="A1" href="index.aspx" runat="server">Home</a></li>

                    <asp:Repeater ID="foo" DataSourceID="SiteMapDataSource1" EnableViewState="false" 
                                    runat="server" onitemcommand="foo_ItemCommand">
                        <ItemTemplate>
                            <li>
                                <a href='<%#Eval("url") %>'><%#Eval("Title") %></a>

                                <ul>
                                    <asp:Repeater ID="bar" DataSource='<%# ((SiteMapNode) Container.DataItem).ChildNodes %>' runat="server">
                                        <ItemTemplate>
                                            <li><a href='<%#Eval("url") %>'><%#Eval("Title") %></a></li>
                                        </ItemTemplate>
                                    </asp:Repeater>
                                </ul>

                            </li>
                        </ItemTemplate>
                    </asp:Repeater>
                </ul>
            </div>

1 个答案:

答案 0 :(得分:1)

您是否在web.config中注册了这个问题?

How to use multiple .sitemap files in ASP.NET

是这样,您可能需要检查名称是否合格。