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

发布于 2024-12-01 04:48:57 字数 2438 浏览 3 评论 0原文

我有一个 asp.net 网站,有不同的用户类型,如管理员、注册用户。每种用户类型都有不同的菜单选项。

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

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

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

**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>

I have an asp.net website with different user types like admin, registered user. Each user type has different menu options.

I have created a common master page for all types of users, but designed different sitemap files for different user types.

What I am trying to do is, after login according to the user type the sitemap should change in Master Page.

Here is the code I tried in master page loading. It is showing me error like

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

I tried with and without .sitemap extension. (I have principal.sitemap and other sitemaps)

    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>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

只怪假的太真实 2024-12-08 04:48:57

正如这个问题所示,您是否在 web.config 中注册了它们?

如何在 ASP.NET 中使用多个 .sitemap 文件

是这样,您可能需要检查该名称是否正确。

Have you registered them in your web.config as this question demonstrates?

How to use multiple .sitemap files in ASP.NET

Is so, you may need to check that the name is qualified properly.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文