2015년 7월 22일 수요일

C# WebForm : 사용자 관리 (3) : 사용자 등록 페이지 - BeHind Code (1)


Html 을 만들었으니 이제 실제로 처리할 로직을 만든다.

참고로 아래의 페이지 작업 방법은 내가 프로젝트 진행 할때 사용했던 방식이니, 굳이 따라 하지 않아도된다.
즉, 아래 처럼 파일을 분산 시키지 않고 파일 하나에 몰아서 작업해도 상관 없다는 얘기.
그냥 참고만 하기 바람.


일단 "Common" 솔루션 디렉토리에 새 프로젝트를 추가.


말그대로 "Common" 기능을 할 것이라, "Site.FrameWork" 라고 프로젝트를 생성.
다른거 하고 싶으면 다른거 해도 됨.


"Site.FrameWork" 에 "BaseClass" 폴더를 하나 생성.


여기다 "새 항목" 을 하나 추가.


"WebBase" 라는 클래스를 하나 만들어 준다.
그리고, "WebBase" 이므로, 웹 모듈이 사용가능 해야 하니...


여기에다가 참조를 등록한다.


"System.Web" 을 참조로 등록해줌.

이 "WebBase" 라는 클래스는 모든 페이지에 기본적으로 포함되어, 페이지가 로딩 될때 마다 공통적으로 실행되는 모듈들이 담기게 될 것이다.
(예를 들면 로그인 여부 확인,  로그, 페이지 통계정보 생성 등...)

하지만... 아직은...


이렇게 비워둔다.
이건 나중에 필요에 따라 기능을 추가 할 꺼임.

이렇게 만들었으면...


빌드를 한번 해주고.
정상적으로 빌드가 되었다면, 웹사이트에서 ...


이렇게 참조를 등록 시도하면...


"프로젝트" 항목에 방금 만든 프로젝트가 있을 꺼임.
요걸 등록.


그럼 요렇게 "Bin" 폴더에 dll 파일이 생성되는데... 이렇게 생성되면...


웹사이트에서 그 프로젝트를 "using" 문을 사용해서 등록해 사용 할 수 있음.
이렇게 "BaseClass" 를 등록 했으면, 그 페이지의 클래스를 "WebBase" 를 상속 받게 변경해줌.


저기에 있는 "System.Web.UI.Page" 를 ....


"WebBase" 로 변경.

즉, 기존에 "System.Web.UI.Page" 를 상속 받던 페이지를 "WebBase" 를 상속 받도록 변경 하는데, 이게 되는 이유는 위에서 확인해보면 알겠지만, "WebBase" 가 "System.Web.UI.Page" 를 상속 받고 있기 때문.

암튼 이렇게 해놓으면 현재 페이지는 "WebBase" 를 먼저 실행하고 자신의 코드를 실행하게 됨.
ASP 식으로 생각하면 "#include '../commonModule.asp'" 뭐 이렇게 최상단에 공통모듈을 인크루드 시켰던것과 비슷하다고 보면 됨.

암튼, 요건 나중에 써먹을 꺼고...

이제 이벤트를 등록해 본다.
일단 등록 기능 부터...


"Write" 버튼을 더블 클릭하면, 코드 편집창으로 이동한다.


아직은 이렇게 아무것도 등록되어 있지 않은데, 여기다 일단은 사용자 입력값 체크 부터 등록 해보자.


우선, "Site.FrameWork" 프로젝트에 "Common" 폴더를 만들고, "cReturnValue" 클래스를 만든다.


등록할 소스는 간단.
이걸 만드는 이유는, 사용자 값 체크를 함수를 이용할 텐데, C#의 함수는 기본적으로 리턴값을 1개만 보내 준다. 물론 "ref" 를 사용하거나, "out" 변수를 사용하면 여러개를 받을 수도 있으나, 이게 은근히 불편하고, 나중에 소스 해석에도 상당히 헷깔린다.

그래서, 이렇게 스트럭트를 사용하는데, 이 클래스가 등록된 "Site.FrameWork" 가 이미 참조에 등록되어 있으므로, 별도의 처리 없이 바로 다른 소스에서 써 먹을 수가 있다.

생성 할때, "Site.FrameWork.Common" 으로 등록하였으니...
"using Site.FrameWork.Common" 만 상단에 기록해 주면, 그 클래스의 "struct" 를 바로 써먹을 수 있다.

아래 처럼...


요렇게 처리 결과와 메시지를 한꺼번에 받을 수 있음.
이걸 변경하면 처리 결과와 메시지와 테이터 셋을 한번에 받을수 있게 처리 할 수도 있음.

암튼 요까지 작업하고, 빌드를 하고 실행 해 보면...


"Write" 버튼을 클릭시 아이디 입력 텍스트 박스에 아무런 값이 없을 경우 메시지 창을 띄워 준다.
이런식으로 체크가 필요한 값을 모두 체크하게 등록해 주면 된다.