게시판 본문 ASP, ASP.NET, IIS & Script - Read Only
| re: SitemapPath에서 URL속성을 상위Frame으로 지정가능한지..궁금합니다. |
|---|
|
작성자: 송원석
작성일시: 2008-07-22 12:57,
조회수: 4,886
|
|
안녕하세요? 송원석입니다. ^_^
저도 말씀하신 작업 같은 것은 실제로 해보지는 않았지만, 어떻게 이리저리 잘 해보면 될 것도 같네요. 기본적으로 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 | 4,179 | ||
| 1,860 | 2008-08-26 | 5,550 | ||
| 1,859 | 2008-08-26 | 4,406 | ||
| 1,858 |
|
2008-08-28 | 4,156 | |
| 1,857 |
이석환 |
2008-08-24 | 1,099 | |
| 1,856 | 2008-08-25 | 4,220 | ||
| 1,854 |
김종식 |
2008-08-06 | 1,030 | |
| 1,853 | 2008-08-07 | 5,242 | ||
| 1,852 |
김종식 |
2008-08-05 | 1,145 | |
| 1,851 | 2008-08-05 | 4,302 | ||
| 1,850 | 2008-07-22 | 4,781 | ||
| 2008-07-22 | 4,886 | |||
| 1,848 | 2008-07-03 | 5,177 | ||
| 1,847 | 2008-07-03 | 4,835 | ||
| 1,846 |
김종식 |
2008-07-03 | 1,278 | |
| 1,845 | 2008-07-03 | 4,575 | ||
| 1,844 | 2008-07-03 | 6,799 | ||
| 1,843 | 2008-07-03 | 5,608 | ||
| 1,842 |
달나라행님 |
2008-06-28 | 1,729 | |
| 1,841 | 2008-06-29 | 5,357 | ||
| 1,840 |
김종식 |
2008-06-27 | 1,412 | |
| 1,839 | 2008-06-27 | 4,629 | ||
| 1,837 | 2008-06-26 | 4,764 | ||
| 1,836 | 2008-06-23 | 4,880 |

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