asp.net 站点地图更改运行时
我有一个 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
正如这个问题所示,您是否在 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.