게시판 본문 ASP, ASP.NET, IIS & Script - Read Only

re: SitemapPath에서 URL속성을 상위Frame으로 지정가능한지..궁금합니다.
작성자: 송원석
작성일시: 2008-07-22 12:57,  조회수: 4,325
안녕하세요? 송원석입니다. ^_^

저도 말씀하신 작업 같은 것은 실제로 해보지는 않았지만, 어떻게 이리저리 잘 해보면 될 것도 같네요. 기본적으로 SiteMapPath 컨트롤을 커스터마이징 하는 경우에는 SiteMapResolve 이벤트 핸들러를 구현합니다. 예를 들어서, 게시판을 한 번 생각해보겠습니다. 게시판의 글내용 보기의 URL 을 분석해보면 아마 다음과 같은 유형일 겁니다.

http://www.domain.com/view.aspx?id=100&type=talk
http://www.domain.com/view.aspx?id=101&type=talk&page=13
http://www.domain.com/view.aspx?id=102&type=talk&page=13&search=empty

그런데, 문제는 게시물이 100 개라고 가정했을 때, Web.sitemap 파일에 대응하는 XML 노드를 모두 기록해 줄수도 없을 뿐더러 게시물은 점점 더 늘어나니, SiteMapPath 컨트롤이 제대로 대응을 하지 못하죠. 또 다른 예로, 게시판에는 대게 목록, 보기, 쓰기, 수정, 답변 등등의 페이지들이 존재하는데, 일반적인 경우 이 페이지들은 모두 SiteMapPath 에서 "XXX 게시판" 과 같이 하나의 이름으로 나타납니다. 이 경우에도 SiteMapPath 컨트롤이 제대로 대응하기가 힘듭니다.

바로 이럴때 SiteMapResolve 를 구현하게 됩니다. 먼저 다음과 같이 페이지의 OnInit 이벤트 핸들러를 상속받아 구현합니다. 여기에서 SiteMapResolve 이벤트의 이벤트 핸들러를 선언합니다.
protected override void OnInit(EventArgs e)
{
    base.OnInit(e);

    // 사이트 맵 탐색 이벤트 헨들러 설정
    SiteMap.SiteMapResolve += new SiteMapResolveEventHandler(SiteMap_SiteMapResolve);
}
그리고, 실제 SiteMapResolveEventHandler 메서드에서는 다음과 비슷하게 구현을 하죠.
/// <summary>
/// 사이트 맵 탐색 이벤트 핸들러
/// </summary>
SiteMapNode SiteMap_SiteMapResolve(object sender, SiteMapResolveEventArgs e)
{
    SiteMapNode currentNode = null;
    string rawUrl = HttpContext.Current.Request.RawUrl;

    #region 사이트 맵 탐색

    if (e.Provider.CurrentNode != null)
        currentNode = e.Provider.CurrentNode.Clone(true);
    else if (rawUrl.IndexOf("/Forum/", StringComparison.CurrentCultureIgnoreCase) > -1)
    {
        if (!string.IsNullOrEmpty(HttpContext.Current.Request["tableID"]))
        {
            string tableID = HttpContext.Current.Request["tableID"].Trim();
            currentNode = e.Provider.FindSiteMapNode("~/Forum/ArticleList.aspx?tableID=" 
                                 + tableID).Clone(true);
        }
    }

    #endregion

    #region 페이지 타이틀 설정

   ... 생략 ...

    #endregion
            
   return currentNode;
}
즉, 자신이 지정한 일정한 법칙에 따라 현재 요청된 페이지의 URL 을 분석하고, 해당 URL 의 정보를 바탕으로 Web.sitemap 파일에 정의된 노드들 중에서 가장 근사치의 노드를 찾아 복사하여 리턴하는 것입니다. 이 때, 필요하다면 복사본의 속성을 바꿀수도 있는 것이죠.

따라서, 위의 메서드에서 최종적으로 currentNode 개체가 리턴되는데, currentNode 는 SiteMapNode 클래스의 인스턴스이므로 이 클래스의 속성인 URL 속성에 URL 대신 원하시는 자바스크립트 함수를 지정하시면 될 것 같습니다.

감사합니다.
IP 주소: 58.227.41.238
전체 2,095 건의 게시물, 84 페이지로 구성된 ASP, ASP.NET, IIS & Script 게시판의 13 페이지입니다.
게시물
1,863

쿠키가 안 사라지고 남아 있어요..

김종식

2008-08-28 914
1,862

re: 쿠키가 안 사라지고 남아 있어요..

송원석

2008-08-29 3,691
1,860

안녕하십니까 송원석님

고민우

2008-08-26 5,025
1,859

re: 안녕하십니까 송원석님

송원석

2008-08-26 3,832
1,858

re: 안녕하십니까 송원석님 [1]

고민우

2008-08-28 3,660
1,857

페이징관련해서 질문좀 드립니다.

이석환

2008-08-24 1,099
1,856

re: 페이징관련해서 질문좀 드립니다.

송원석

2008-08-25 3,738
1,854

동시접속에 관해서요..

김종식

2008-08-06 1,030
1,853

re: 동시접속에 관해서요..

송원석

2008-08-07 4,716
1,852

윈도우 2008에서요...

김종식

2008-08-05 1,145
1,851

re: 윈도우 2008에서요...

송원석

2008-08-05 3,793
1,850

SitemapPath에서 URL속성을 상위Frame으로 지정가능한지..궁금합니다.

박준우

2008-07-22 4,274

re: SitemapPath에서 URL속성을 상위Frame으로 지정가능한지..궁금합니다.

송원석

2008-07-22 4,325
1,848

ASP와 델파이 연동 문제

LHG

2008-07-03 4,678
1,847

re: ASP와 델파이 연동 문제

송원석

2008-07-03 4,328
1,846

입력값들이 다 날라가요..

김종식

2008-07-03 1,278
1,845

re: 입력값들이 다 날라가요..

송원석

2008-07-03 4,080
1,844

FTP7 on Windows Server 2008

길버트

2008-07-03 6,245
1,843

re: FTP7 on Windows Server 2008

송원석

2008-07-03 5,059
1,842

[초보질문]데이터에서 태그를 제외한 텍스트만 가져오기 [1]

달나라행님

2008-06-28 1,729
1,841

re: [초보질문]데이터에서 태그를 제외한 텍스트만 가져오기

송원석

2008-06-29 4,818
1,840

오피스 파일 내용들이 다 깨져요..

김종식

2008-06-27 1,412
1,839

re: 오피스 파일 내용들이 다 깨져요..

송원석

2008-06-27 4,147
1,837

EgoCube error '8009000f' 에러 입니다. [2]

홍댕무

2008-06-26 4,242
1,836

오라클을 사용해야 하는데요..!! 시퀄서버에 익숙해져 있어서;;

장윤태

2008-06-23 4,333