logo
border border
              
border border
border border
  Post Subject :: #88. VS 2008을 이용한 블로그 프로그래밍 - Part9     [ASP.NET]
border border
border border
     
이 포스트는 월간 마이크로소프트웨어에 기고한 원고를 재편집한 포스트입니다. 그러므로, 본의 아니게 반말로 진행되고 있습니다. 원래 싸가지가 없어서 그런 것이 아니니 무한 용서를... ^^;;
또한, .NET Framework 3.5 SP1이 적용되기 이전의 소스이므로, 현재의 개발 환경과 다를 수 있습니다. 마소에 제출한 블로그 소스는 블로그 소스 다운로드에서 다운로드하실 수있습니다.

포스트 조회 페이지의 구성

이제, 포스트 조회 페이지를 구성하는 방법에 대해서 알아보도록 하자. 먼저 포스트를 조회하기 위한 “PostView.aspx" 파일을 만들기 위해, 웹 사이트 이름에서 우측 마우스를 클릭하여 “새 항목 추가(Add New Item...)" 메뉴를 선택하여, "PostView.aspx"라는 이름의 페이지를 추가한다.
먼저, 작성한 포스트에 대한 정보를 화면에 출력하기 위한 코드를 "PostView.aspx" 파일에 추가하도록 하며, 이 코드는 이달의 디스켓을 참조하도록 한다.

“PostView.aspx" 파일에 포스트의 정보를 출력하는 코드를 추가한 후, “PostView.aspx.cs"에서 포스트의 정보를 가져오는 코드를 작성한다. 우선, 전역변수로 _strPostID를 선언한 후에, 쿼리스트링으로 전달되는 PostID값을 할당한다. 그 후, Page_Load 이벤트에서 현재 포스트의 정보를 가져오는 GetPostData() 메소드를 호출한다. 현재 포스트의 정보를 가져오는 GetPostData() 메소드의 코드는 <리스트 3>과 같다.

    // 현재 조회하려는 블로그 데이터 가져오기
    private void GetPostData()
    {
        // 해당 블로그 데이터 조회
        BLOG_POSTS blogPost
            = blogDataContext.BLOG_POSTS.Single(q => q.postid == _strPostID);
 
        // 조회수를 1증가시킨다.
        blogPost.viewcount = blogPost.viewcount + 1;
        blogDataContext.SubmitChanges();
 
        // 조회된 데이터를 출력
        lblPostSubject.Text = blogPost.postname;
        lblCreateDate.Text = blogPost.createdate.ToString();
        lblViewCount.Text = blogPost.viewcount.ToString();
        lblCommentCount.Text = blogPost.commentcount.ToString();
        lblPostContent.Text
            = Server.HtmlDecode(blogPost.postcontent.ToString().Replace("\r\n", "<br />"));
        hlnkCategory.Text = blogPost.BLOG_CATEGORIES.categoryname;
        hlnkCategory.NavigateUrl = "/Category/" + blogPost.categoryid.ToString() + ".aspx";
        lblTrackBackUrl.Text
            = Request.ServerVariables["HTTP_HOST"].ToString() + "/TrackBack/" + _strPostID + ".aspx";
        lblTrackBackUrl.Attributes.Add("onclick", "fnCopyUrl('" + lblTrackBackUrl.Text + "')");
 
        _categoryID = blogPost.categoryid.ToString();
        this.Master.Page.Title = lblPostSubject.Text;
    }
<리스트 3> GetPostData() 메소드의 코드

GetPostData() 메소드는 쿼리스트링으로 전달받은 PostID값을 가지고 BLOG_POST 테이블에서 PostID값이 일치하는 “BLOG_POST" 엔티티를 찾은 후, 화면에 필요한 정보만을 표시하도록 코드가 구성되어 있다. 또한 <필자메모>에서 설명한 것과 같이, GetPostData() 메소드에서도, 카테고리를 클릭할 경우 카테고리 목록 화면으로 이동하기 위한 URL인 “/Category/카테고리ID.aspx"와 트랙백 정보를 받기위한 ”/TrackBack/포스트ID.aspx"를 정의하고 있다. GetPostData() 메소드를 통해 구성된 "PostView.aspx" 파일의 화면은 <화면 3>과 같다.


<화면 3> 기본 정보가 표시된 포스트 조회 화면

다음으로는, 현재 조회하고 있는 포스트의 이전/다음 포스트 정보를 구성하는 코드에 대해서 설명하도록 하겠다. 우선 현재 포스트의 이전/다음 포스트 정보를 가져오는 쿼리는 저장 프로시져를 사용하여 구성하며, 사용되는 저장 프로시져명은 “dbo.usp_GetPrevNextPost”이고, 이 저장 프로시져는 <리스트 4>와 같이 구성되어 있다.

CREATE PROCEDURE [dbo].[usp_GetPrevNextPost]
(
    @postid            NVARCHAR(50)
,    @categoryid        INT
,    @prevpostid        NVARCHAR(50)     OUTPUT
,    @nextpostid        NVARCHAR(50)    OUTPUT
,    @prevpostname    NVARCHAR(100)    OUTPUT
,    @nextpostname    NVARCHAR(100)    OUTPUT
)
AS
BEGIN
    DECLARE @nowpostdate        DATETIME
 
    SELECT @nowpostdate 
        = (SELECT CreateDate FROM BLOG_POSTS WHERE PostID = @postid)
    SELECT @prevpostid 
        = (SELECT TOP 1 ISNULL(PostID, '') AS PrevPostID 
            FROM BLOG_POSTS 
            WHERE CategoryID = @categoryid AND CreateDate < @nowpostdate 
            AND DeleteDate IS NULL 
            ORDER BY CreateDate DESC)
    SELECT @nextpostid 
        = (SELECT TOP 1 ISNULL(PostID, '') AS NextPostID 
            FROM BLOG_POSTS 
            WHERE CategoryID = @categoryid AND CreateDate > @nowpostdate 
            AND DeleteDate IS NULL 
            ORDER BY CreateDate ASC)
    SELECT @prevpostname 
        = (SELECT PostName FROM BLOG_POSTS WHERE PostID = @prevpostid)
    SELECT @nextpostname 
        = (SELECT PostName FROM BLOG_POSTS WHERE PostID = @nextpostid)
END
<리스트 4> usp_GetPrevNextPost 저장 프로시져의 코드

<리스트 4>과 같이 저장 프로시져를 생성한 후, “App_Code" 폴더 안에 이미 생성되어 있는 ”BlogDataClasses.dbml“ 파일의 디자이너 화면의 우측 영역에 이 저장 프로시져를 추가하기 위해, 기존에 연결시켜 놓은 "서버 탐색기(Server Explorer)"의 연결 정보를 새로고침하여, 추가된 ”dbo.usp_GetPrevNextPost“ 저장 프로시져를 검색한 후, ”BlogDataClasses.dbml“ 파일의 디자이너 화면의 우측 영역으로 저장 프로시져를 드래그 앤 드랍하여, 저장 프로시져를 추가한다.

그 후에, Page_Load 이벤트에서 이 저장 프로시져를 사용하기 위한 메소드인 GetPrevNextPostInfo() 메소드를 호출한다. GetPrevNextPostInfo() 메소드의 코드는 <리스트 5>와 같다.

    private void GetPrevNextPostInfo()
    {
        string strPrevPostID = string.Empty;
        string strNextPostID = string.Empty;
        string strPrevPostName = string.Empty;
        string strNextPostName = string.Empty;
 
        int iReturn 
            = blogDataContext.usp_GetPrevNextPost(_strPostID, int.Parse(_categoryID)
            , ref strPrevPostID, ref strNextPostID, ref strPrevPostName, ref strNextPostName);
 
        // 이전 포스트가 있을 경우
        if (! string.IsNullOrEmpty(strPrevPostID))
        {
            hlnkPrevPost.Text = strPrevPostName;
            hlnkPrevPost.NavigateUrl = "/Post/" + strPrevPostID + ".aspx";
        }
        else
        {
            hlnkPrevPost.Text = "이전 포스트가 없습니다.";
        }
 
        // 다음 포스트가 있을 경우
        if (!string.IsNullOrEmpty(strNextPostID))
        {
            hlnkNextPost.Text = strNextPostName;
            hlnkNextPost.NavigateUrl = "/Post/" + strNextPostID + ".aspx";
        }
        else
        {
            hlnkNextPost.Text = "다음 포스트가 없습니다.";
        }
    }
<리스트 5> GetPrevNextPostInfo() 메소드의 코드

<리스트 5>와 같이 현재 포스트의 이전/다음 포스트 정보를 가져오는 메소드를 호출하게 되면, <화면 4>와 같은 화면을 볼 수 있게 된다.


<화면 4> 포스트의 이전/다음 정보가 표시된 화면

다음으로는 포스트에 작성된 덧글 정보를 표시하는 코드에 대해서 설명하도록 하겠다. Page_Load 이벤트에, 덧글 정보를 가져오는 GetPostCommentInfo() 메소드를 추가한 후, 포스트에 관련된 덧글 정보를 가져오는 코드를 작성한다. GetPostCommentInfo() 메소드에 관련된 코드는 이달의 디스켓을 참고하도록 하며, 조회된 덧글 정보는 “PostView.aspx" 파일에 이미 정의되어 있는 ListView 컨트롤에 의해서 화면에 보여지게 된다. 등록되어 있는 덧글 정보가 있다면, <화면 5>와 같이 화면에 표시되게 된다.


<화면 5> 포스트 조회 화면에서 보이는 덧글 목록 화면

<화면 5>에서 보이는 것처럼, 포스트를 조회하는 방문자가 포스트에 대한 덧글 정보를 입력한 후, “덧글 입력” 버튼을 클릭하게 되면, 방문자가 입력한 덧글 정보가 "BLOG_COMMENTS" 테이블에 입력되게 된다. 이러한 로직은 “PostView.aspx.cs" 파일의 ”btnWriteComment_Click" 이벤트에 정의되어 있다. “덧글 입력” 버튼을 클릭하면, 방문자가 입력한 덧글 정보를 테이블에 저장한 후, “BLOG_POSTS" 테이블에서 현재 포스트의 Comment 개수를 1 증가시키게 되며, 다시 덧글 정보 목록을 조회하여 화면에 보여주게 된다. 덧글 정보를 입력하는 부분과 덧글 정보를 보여주는 부분은 ASP.NET AJAX를 이용하기 위해서 UpdatePanel 컨트롤의 ContentTemplate 템플릿 안에 구현되어 있으며, UpdatePanel 컨트롤을 사용하기 위해서, ScriptManager 컨트롤의 선언 구문에 페이지 상단에 추가되어 있다.


Creative Commons License
저작물크리에이티브 커먼즈 코리아 저작자표시-비영리-동일조건변경허락 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
border border
border border
  이전 포스트 :: #87. VS 2008을 이용한 블로그 프로그래밍 - Part8
  다음 포스트 :: #89. VS 2008을 이용한 블로그 프로그래밍 - Part10
border border
border border
  
# Commented By :: 꼬기얌얌얌 At 3/18/2009 6:06:42 PM [M] [D]
지금 조심조심 올려주신 강좌보면서 따라하구 있는데욤....
몇가지 이상한점이 있어서 질문글 올립니다.(제가 먼가를 잘못한거겠지요...ㅠㅠ)
우선 올려주신 소스를 보면 App_Code창을 열어서 보면 왼쪽엔 테이블이있고 오른쪽에 메서드들이
들어가있는데요...코드는 비교해봤을때 똑같은데 전 생성이 안되더라구요...ㅠㅠ
그리구 현재 코드를 실행해보면 dbo.usp_GetVisitInfo 저장프로시져를 찾을수 없다구 나오는데
어떤 부분이 잘못된건지 도통 모르겠습니다...ㅠㅠ 검색을 통해서 해결해 보려구 했으나..
맘처럼 쉽지가 않네요 .....도움말씀좀 부탁드리겠습니다.
# Commented By :: deKKIL At 3/18/2009 9:41:30 PM [D]
참고하세요.
CREATE PROCEDURE [dbo].[usp_GetVisitInfo]
(
@todaycount INT OUTPUT
, @yesterdaycount INT OUTPUT
, @totalcount INT OUTPUT
)
AS
BEGIN
DECLARE @today VARCHAR(10)
DECLARE @yesterday VARCHAR(10)

SELECT @today = CONVERT(VARCHAR(10), GETDATE(), 120)
SELECT @yesterday = CONVERT(VARCHAR(10), DATEADD(dd, -1, GETDATE()), 120)
SELECT @todaycount = (SELECT ISNULL(COUNT(IP), 0) FROM dbo.BLOG_COUNTS
WHERE CONVERT(VARCHAR(10), VisitDate, 120) = @today)
SELECT @yesterdaycount = (SELECT ISNULL(COUNT(IP), 0)
FROM dbo.BLOG_COUNTS
WHERE CONVERT(VARCHAR(10), VisitDate, 120) = @yesterday)
SELECT @totalcount = (SELECT ISNULL(COUNT(IP), 0) FROM dbo.BLOG_COUNTS)
END
# Commented By :: 꼬기얌얌얌 At 3/19/2009 10:11:01 AM [D]
감사합니다...우선 한가지는 해결됐네요...^^;
다른부분들은 좀더 소스를 분석해야될듯 싶어요..ㅠㅠ
암튼 좋은강좌 잘보구있습니다.
완성돼면 블로그주소 올려볼께요...^^
# Commented By :: 꼬기얌얌얌 At 3/19/2009 1:09:47 PM [D]
저장프로시져들두 올려주시면 안될까요~~~흠 너무 많이 부탁을 드려서....ㅠㅠ;;
# Commented By :: deKILL At 3/19/2009 1:42:10 PM [D]
CREATE PROCEDURE [dbo].[usp_GetPostsInfoByTag]
(
@tag VARCHAR(20)
)
AS
BEGIN
SELECT PostID, PostName, posts.CreateDate, PostContent,
Tag, ViewCount, CommentCount, CategoryName
FROM dbo.BLOG_POSTS posts
INNER JOIN dbo.BLOG_CATEGORIES category
ON posts.categoryid = category.categoryid
WHERE posts.Tag LIKE '%' + @tag + '%'
ORDER BY posts.CreateDate DESC
END
================================================
CREATE PROCEDURE [dbo].[usp_SetTagInfo]
(
@command VARCHAR(6)
, @tag VARCHAR(20)
)
AS
BEGIN
SET @tag = LTRIM(@tag)
IF @command = 'create'
BEGIN
--기존에 입력된 태그 정보가 없으면
IF (0 = (SELECT COUNT(TagName) FROM dbo.BLOG_TAGS
WHERE UPPER(tagname) = UPPER(@tag)))
BEGIN
INSERT INTO dbo.BLOG_TAGS VALUES (@tag, 1)
END
ELSE
BEGIN
UPDATE dbo.BLOG_TAGS SET tagcount = tagcount + 1
WHERE UPPER(tagname) = UPPER(@tag)
END
END
ELSE IF @command = 'delete'
BEGIN
UPDATE dbo.BLOG_TAGS SET tagcount = tagcount - 1
WHERE UPPER(tagname) = UPPER(@tag)
-- 현재 태그의 개수가 0이면 삭제
IF (0 = (SELECT COUNT(TagName) FROM dbo.BLOG_TAGS
WHERE UPPER(tagname) = UPPER(@tag)))
BEGIN
DELETE FROM dbo.BLOG_TAGS WHERE UPPER(tagname) =
UPPER(@tag)
END
END
END
==================================================
CREATE PROCEDURE [dbo].[usp_GetSearchPostsInfo]
(
@searchtext VARCHAR(30)
)
AS
BEGIN
IF @searchtext <> ''
BEGIN
SELECT PostID, PostName, posts.CreateDate,
PostContent, Tag, ViewCount, CommentCount, CategoryName
FROM dbo.BLOG_POSTS posts
INNER JOIN dbo.BLOG_CATEGORIES category
ON posts.categoryid = category.categoryid
WHERE (PostName LIKE '%' + @searchtext + '%' OR
PostContent LIKE '%' + @searchtext + '%'
OR Tag LIKE '%' + @searchtext + '%') AND
posts.DeleteDate IS NULL
ORDER BY posts.CreateDate DESC
END
END
================================================
CREATE PROCEDURE [dbo].[usp_GetArchivePostsInfo]
(
@archiveid VARCHAR(7)
)
AS
BEGIN
SELECT PostID, PostName, CreateDate, PostContent, Tag, ViewCount, CommentCount
FROM dbo.BLOG_POSTS
WHERE CONVERT(VARCHAR(7), CreateDate, 120) = @archiveid
AND DeleteDate IS NULL
ORDER BY CreateDate DESC
END
==============================================
CREATE PROCEDURE [dbo].[usp_SetArchivesCount]
(
@archivesdate VARCHAR(7)
, @archivescount INT
)
AS
BEGIN
IF EXISTS (SELECT ArchivesDate FROM BLOG_ARCHIVES
WHERE ArchivesDate = @archivesdate)
BEGIN
UPDATE BLOG_ARCHIVES SET ArchivesCount =
ArchivesCount + @archivescount
WHERE ArchivesDate = @archivesdate
IF 0 = (SELECT ArchivesCount FROM BLOG_ARCHIVES
WHERE ArchivesDate = @archivesdate)
BEGIN
DELETE FROM BLOG_ARCHIVES WHERE ArchivesDate = @archivesdate
END
END
ELSE
BEGIN
INSERT INTO BLOG_ARCHIVES VALUES (@archivesdate, @archivescount)
END
END
============================================
CREATE PROCEDURE [dbo].[usp_GetPrevNextPost]
(
@postid NVARCHAR(50)
, @categoryid INT
, @prevpostid NVARCHAR(50) OUTPUT
, @nextpostid NVARCHAR(50) OUTPUT
, @prevpostname NVARCHAR(100) OUTPUT
, @nextpostname NVARCHAR(100) OUTPUT
)
AS
BEGIN
DECLARE @nowpostdate DATETIME
SELECT @nowpostdate = (SELECT CreateDate FROM
BLOG_POSTS WHERE PostID = @postid)

SELECT @prevpostid = (SELECT TOP 1 ISNULL(PostID, '')
AS PrevPostID FROM BLOG_POSTS WHERE CategoryID =
@categoryid AND CreateDate < @nowpostdate AND DeleteDate
IS NULL ORDER BY CreateDate DESC)
SELECT @nextpostid = (SELECT TOP 1 ISNULL(PostID, '')
AS NextPostID FROM BLOG_POSTS WHERE CategoryID =
@categoryid AND CreateDate > @nowpostdate AND DeleteDate
IS NULL ORDER BY CreateDate ASC)
SELECT @prevpostname = (SELECT PostName FROM BLOG_POSTS
WHERE PostID = @prevpostid)
SELECT @nextpostname = (SELECT PostName FROM BLOG_POSTS
WHERE PostID = @nextpostid)
END

# Commented By :: 꼬기얌얌얌 At 3/19/2009 5:57:06 PM [D]
아 감사합니다. 올려주신 프로시져 덕분에 몇가지 부분 수정을 했습니다.
근데 또 질문이 있어서요...ㅠㅠ(떄리진 마세요...ㅠㅠ)
Admin.aspx 페이지에서 포스트나 공지사항을 저장하면 스크립트로 해당 탭으로 이동하는것 같은데요.
스크립트 오류가 생기는데 무슨 문제인지를 도통 모르겠습니당..ㅠㅠ
그리구 UrlRewriter 요거 닷넷 3.5 버젼에서도 사용이 가능한지 궁금합니다.
포스트나 요런거 찍어보면 404 에러뜨네요...주소를 보면 제대로 가져오기는 하는것 같습니다.
예를들어 blogprogramming/12.aspx 요런식으루 넘어오구요.
단 포스트 읽어올때만 CC1CD9DF-A662-4EE2-9A5F-0408C605D6AA.aspx 요런식으루 넘어오더라구요.
스크립트는 사용안하면 별다른 에러가 없는데요 UrlReWriter을 어떻게 사용해야 될지 모르겠습니다.
도움말씀좀 부탁드릴께요~~~~
# Commented By :: deKKIL At 3/19/2009 9:26:27 PM [D]
8번 게시물에 자세히 나오네요.
web.config에
..
..
등등...추가해 주라는거 추가해주시고...또 뭐가 필요할까요?
흠...
Bin 폴더에 Intelligencia.UrlRewriter.dll 추가해주시고
그럼 대충 되지 싶은데요
# Commented By :: deKKILL At 3/19/2009 9:34:10 PM [D]
저도 포스트 따라서 해보고 있는데요.
대충은 따라온거 같은데 몇군데 조금 그러네요;;
http://img.todaystory.net/img/6f49e01d68aaa5eafcb4454b204e0b8c.jpg
# Commented By :: 꼬기얌얌얌 At 3/20/2009 9:48:19 AM [D]
deKKILL님 답변 감사합니다.
현재 web.config에 올려주신 이미지처럼 추가해주고 Bin폴더에 Intelligencia.UrlRewriter.dll 참조추가
까지 마친 상태입니다..ㅠㅠ
테스트할때 가상웹서버나 실제 웹서버에 올려야 제대로 테스트가 되는건지요??
포스트를 보구 간신히 따라가구는 있는데 저 역시 몇몇 부분이 제대로 작동을 하지 않는것 같습니다.
수정한 부분이 있으면 서로 공유를 했으면 합니다..^^;
# Commented By :: deKKIL At 3/20/2009 1:08:38 PM [D]
url리라이터를 쓰게되면
가상웹서버나 실제 웹서버에 올리는게 링크가 제대로 잡힐꺼 같은데요.
마스터파일에서
href="/About.aspx"> ABOUT
href="/Tag.aspx"> TAG
....
처럼 경로명 앞에 / 로 바꿔주시구요.
# Commented By :: 최지훈 At 3/20/2009 1:41:32 PM [M] [D]
늦게 답변을 해드려서 죄송합니다...
(뭔가를 하고 싶은 의욕이 사라져서 며칠 방황했었습니다... 봄을 타나.. ㅡㅡ;;)

제가 최초에 글을 작성한 시점인 2008년 1월~2월에 UrlRewriter를 이용하여 URL에 대한 리디렉션을 시도할때에는 문제가 없었던 것으로 알고 있습니다.

하지만, Microsoft에서 계속적인 버전의 업그레이드로 인해 .Net Framework 3.5의 서비스팩1과 Visual Studio 2008의 서비스팩1등이 출시되었고, 그에 따라 제가 작성할때의 환경과는 매우 달라졌습니다. (그러므로, 기존 소스의 web.config 파일 구성과 현재의 web.config 파일의 구성이 다른 거겠죠..)

하지만, IIS 6.0 환경에서는 정상적으로 동작할 것이라 생각됩니다. (테스트는 못해봤네요..) 그러나, IIS 7.0 환경에서는 UrlRewriter를 이용한 URL 리디렉션 기능이 정상적으로 동작하지는 않습니다. IIS 7.0의 환경이 변경되었기 때문입니다. 테스트를 해보시기 위해서는 IIS에 별도의 웹 사이트를 만드시고, 이 웹사이트가 사용하는 응용 프로그램 풀의 관리되는 파이프라인 모드를 "통합"에서 "클래식"으로 변경하시고 테스트해보시기 바랍니다. 이 경우 정상적으로 동작되는 것을 확인하였습니다.

URL의 리디렉트 기능에 대해서는 IIS 7.0에서 사용할 수 있는 기능을 이용하던지, 아니면 다른 방법으로 처리를 하는 방법으로 다시 포스트를 작성해보도록 하겠습니다. 또한, 나머지 내용도 제가 마소에 제출했던 문서를 직접 링크하거나 빠른 시간내에 포스팅하도록 하겠습니다.

관심을 가져주셔서 감사드립니다. 고생하세요~

# Commented By :: 꼬기얌얌얌 At 3/20/2009 3:36:12 PM [D]
deKKIL, 최지훈님 답변감사합니다..^^
두분의 말씀대로 두가지 다 테스트를 해본뒤 결과를 올려보도록 하겠습니다.
현재 OS환경이 비스타 환경이라서 IIS7.0 환경으로 웹검색을 하던도중에 IIS 7 용 URL Rewrite 모듈을
iis.net 에서 배포가 되구 있더군요....
마침 다운받아서 설치하기전에 댓글을 확인하게 됩니다...^^;(다행인듯....ㅎㅎ;;)
그리구 실질적으로 회사 웹서버(2003, iis6.0)에서 테스트를 해본결과 역시나 404에러 페이지가 발생합니다.
우선 테스트를 해보구서 글을 올리도록 하겠습니다.
두분다 신경써주신점 감사합니다..^^

# Commented By :: 꼬기얌얌얌 At 3/20/2009 3:46:26 PM [D]
아 deKKIL님은 현재 잘 작동이 되시는건가요??
# Commented By :: deKKIL At 3/20/2009 4:57:45 PM [D]
현재 비스타 환경이고 vs2008 사용중입니다.
그런대로.....
원래부터 소스에 포함되지 않은 몇개의 파일빼곤 기능이 제대로 되고 있는거 같습니다.
http://img.todaystory.net/img/7ac309a4c3774f56b9c7764ae18bb161.jpg

# Commented By :: 꼬기얌얌얌 At 3/20/2009 5:28:59 PM [D]
흠...부럽습니다..ㅠㅠ
전 소스가 이래저래 엉킨것 같네요...다시 엎구 처음부터 해야될듯 싶네요.....
원래 소스에 있는 기능들 빼놓고 기능이 제대로 안돼는것들 투성이네요...ㅠㅠ
  NAME ::   PASSWORD ::
  MAIL ::   HOMEPAGE ::
  COMMENT ::
border border
border border
COPYLEFT NX Blogs.   opml

LogIn ]  [ Join NX Blog's ]
border border
border border
mvp
border border
border border
  border
   Personal Thought
   ASP.NET
   ASP.NET AJAX
   ASP.NET MVC Framework
   Dev Story(Etc.)
   Reading the Articles
   About Microsoft / MSDN
   Certification Talk
   Useful Dev Tools
border border
border border
  border
   2010 년 09 월 (1)
   2010 년 06 월 (1)
   2010 년 05 월 (1)
   2010 년 04 월 (1)
   2010 년 03 월 (1)
   2010 년 02 월 (5)
   2010 년 01 월 (1)
   2009 년 04 월 (2)
   2009 년 03 월 (3)
   2009 년 02 월 (6)
   2009 년 01 월 (1)
   2008 년 10 월 (1)
   2008 년 06 월 (8)
   2008 년 05 월 (10)
   2008 년 04 월 (13)
   2008 년 03 월 (9)
   2008 년 02 월 (17)
   2008 년 01 월 (5)
   2007 년 12 월 (8)
   2007 년 11 월 (15)
   2007 년 10 월 (36)
   2007 년 09 월 (33)
   2007 년 08 월 (17)
   2007 년 07 월 (23)
   2007 년 06 월 (4)
   2007 년 05 월 (16)
   2007 년 04 월 (26)
   2007 년 03 월 (14)
   2007 년 02 월 (25)
   2007 년 01 월 (41)
   2006 년 12 월 (38)
   2006 년 11 월 (0)
   2006 년 10 월 (0)
   2006 년 09 월 (1)
   2006 년 08 월 (9)
   2006 년 07 월 (1)
border border
border border
  border
   #128. 無題
    By 최지훈 At 9/3/2010
   127. [예약구매] 실전. jQ...
    By 최지훈 At 6/13/2010
   #126. 무제
    By 최지훈 At 5/23/2010
   #125. 요즘 근황?
    By 최지훈 At 4/15/2010
   #124. ASP.NET 4 책을...
    By 최지훈 At 3/12/2010
   #97. ASP.NET 4 New...
    By 최지훈 At 2/12/2010
   #96. ASP.NET 4 New...
    By 최지훈 At 2/10/2010
   #95. ASP.NET 4 New...
    By 최지훈 At 2/9/2010
   #94. ASP.NET 4 New...
    By 최지훈 At 2/2/2010
   #93. ASP.NET 4 New...
    By 최지훈 At 2/1/2010
border border
border border
  border
   배는숨겨야지 에서 나도 모르게 빵...
    By ㅋㅋ At 8/17/2010
   Sorry. I don't hav...
    By 최지훈 At 8/16/2010
   내 생애 번역서는 이걸루 끝이다....
    By 최지훈 At 8/16/2010
   네..^^;; 저도 감사합니다.
    By 최지훈 At 8/16/2010
   IIS 버전이 업그레이드되면서 해...
    By 최지훈 At 8/16/2010
   나중에 비슷한 차로 태워는 줄께~...
    By 최지훈 At 8/16/2010
   나도 사주세요 저 차
    By ㅋㅋ At 8/12/2010
   저도 URL Rewriting 이...
    By 초보 At 8/7/2010
   감사드립니다^^
    By 이한철 At 7/28/2010
   오우~ 형 ㅊㅋㅊㅋ해~ 결국 했구...
    By 산티아고 At 7/26/2010
border border