게시판 본문 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 | 2008-08-29 | 3,691 | ||
1,860 | 2008-08-26 | 5,025 | ||
1,859 | 2008-08-26 | 3,832 | ||
1,858 |
re: 안녕하십니까 송원석님 [1] |
2008-08-28 | 3,660 | |
1,857 |
이석환 |
2008-08-24 | 1,099 | |
1,856 | 2008-08-25 | 3,738 | ||
1,854 |
김종식 |
2008-08-06 | 1,030 | |
1,853 | 2008-08-07 | 4,716 | ||
1,852 |
김종식 |
2008-08-05 | 1,145 | |
1,851 | 2008-08-05 | 3,793 | ||
1,850 | 2008-07-22 | 4,274 | ||
2008-07-22 | 4,325 | |||
1,848 | 2008-07-03 | 4,678 | ||
1,847 | 2008-07-03 | 4,328 | ||
1,846 |
김종식 |
2008-07-03 | 1,278 | |
1,845 | 2008-07-03 | 4,080 | ||
1,844 | 2008-07-03 | 6,245 | ||
1,843 | 2008-07-03 | 5,059 | ||
1,842 |
달나라행님 |
2008-06-28 | 1,729 | |
1,841 | 2008-06-29 | 4,818 | ||
1,840 |
김종식 |
2008-06-27 | 1,412 | |
1,839 | 2008-06-27 | 4,147 | ||
1,837 | 2008-06-26 | 4,242 | ||
1,836 | 2008-06-23 | 4,333 |