나는 admin, 등록 된 사용자와 같은 다른 사용자 유형을 가진 asp.net 웹 사이트를 가지고 있습니다. 각 사용자 유형에는 다른 메뉴 옵션이 있습니다.asp.net 사이트 맵 변경 런타임
나는 모든 유형의 사용자에 대해 공통 마스터 페이지를 만들었지 만 다른 사용자 유형에 대해 다른 사이트 맵 파일을 설계했습니다.
내가하려는 것은 사용자 유형에 따라 로그인 한 후 마스터 페이지에서 사이트 맵을 변경해야한다는 것입니다.
다음은 마스터 페이지 로딩에서 시도한 코드입니다. 그것은 나와 같은 오류를 보이고있다
**The SiteMapProvider 'Principal.sitemap' cannot be found.**
나는 .sitemap 확장자와 함께 사용하지 않고 시험해 보았다. (교장.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>
사이트 맵의 경로가 맞습니까? – Bobby