2011-08-24 4 views
1

나는 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> 
+0

사이트 맵의 경로가 맞습니까? – Bobby

답변

1

이 질문에 답하는대로 web.config에 등록 했습니까?

How to use multiple .sitemap files in ASP.NET

는 이름이 제대로 자격이 있는지 확인해야 할 수도 있습니다, 그래서입니다.

+0

감사합니다. web.config 이름을 사용할 때 작동합니다. – AjayR