C# ASP.NET多站点地图和面包屑
我有Web.sitemap、admin.sitemap、user.sitemap。 我在web.config中输入了3个提供者C# ASP.NET多站点地图和面包屑,c#,asp.net,webforms,sitemap,breadcrumbs,C#,Asp.net,Webforms,Sitemap,Breadcrumbs,我有Web.sitemap、admin.sitemap、user.sitemap。 我在web.config中输入了3个提供者 <siteMap defaultProvider="SiteMapDefault"> <providers> <add name="SiteMapDefault" type="System.Web.XmlSiteMapProvider" siteMapFile="Web.sitemap" /&
<siteMap defaultProvider="SiteMapDefault">
<providers>
<add
name="SiteMapDefault"
type="System.Web.XmlSiteMapProvider"
siteMapFile="Web.sitemap" />
<add
name="SiteMapUser"
type="System.Web.XmlSiteMapProvider"
siteMapFile="user.sitemap" />
<add
name="SiteMapAdmin"
type="System.Web.XmlSiteMapProvider"
siteMapFile="admin.sitemap" />
</providers>
</siteMap>
我的面包屑在主页上:
<b>You are here: </b>
<asp:SiteMapPath ID="SiteMapPath1" runat="server">
</asp:SiteMapPath>
它当前正在使用SiteMapDefault。
我想做的是当我在管理或用户页面上时更改面包屑。
管理>链接1>链接1.1
我还有3个文件:
SiteMap.aspx在网站SiteMapAdmin.aspx和SiteMapUser.aspx上显示的默认值
因此,我有我的正常面包屑工作,当我在/Admin时,我希望面包屑使用Admin.sitemap而不是Web.sitemap。
我该怎么做?
提前感谢您在您的页面\u PreInit事件中,您可以按名称将每个SiteMap驱动控件的SiteMapProvider设置为覆盖默认值
protected void Page_PreInit(object sender, EventArgs e)
{
this.SiteMapPath1.SiteMapProvider = "SiteMapUser";
this.Menu1.SiteMapProvider = "SiteMapUser";
}
谢谢你,夜猫子。
我不能用MasterType方法。我尝试了FindControl。。。我也是,但不起作用。
所以我决定这样做:
protected void Page_Load(object sender, EventArgs e)
{
if (Page.ToString().IndexOf("user") != -1)
{
SiteMapPath1.SiteMapProvider = "SiteMapUser";
}
else if (Page.ToString().IndexOf("admin") != -1)
{
SiteMapPath1.SiteMapProvider = "SiteMapAdmin";
}
else
{
SiteMapPath1.SiteMapProvider = "SiteMapDefault";
}
}
它在页面_PreInit上不起作用,所以我将它放在包含SiteMapPath1的母版页中的页面_加载上。
你帮了我很多,谢谢
这是一个与我的目录树相对应的noob解决方案。我在名为base.master Class App\u master\u base的主母版页上编写了受保护的无效页面\u PreInitobject sender,EventArgs e{This.SiteMapPath1.SiteMapProvider=SiteMapDefault;}。我想尝试您的解决方案,但它无法识别变量SiteMapPath1。所以我在App_Master_基类中声明了它,但是我还没有找到如何访问这个变量。我试过使用这个.Master.Master.SiteMapPath1.SiteMapProvider=SiteMapUser;因为我的user.master使用的是threecol.master,它使用base.masterRead来学习如何公开master基类上的公共属性。关键是在页面上设置声明,以便您可以访问母版页的那些属性,包括为它们设置值。