본문 바로가기

Asp.net (C#.net)

App_Code 사용 또는 사용자 클래스 사용

대부분 개인적으로 만들어서 쓰는 클래스들이 많을텐데..

이렇게 만든 클래스를 어디서든 사용가능하게 만들어서 사용하는 방법. 이라고 적고 보니 다들 이렇게 쓸것 같은데...

그리고 제가 쓰는 용어들이 일반적이지않을수 있음을 먼저 알려드립니다. 제가 간혹 비어, 속어를 구분못하고 쓰고 있더군요. 고칠려고 노력중입니다.

 

우선 제 기준으로는 2가지의 방법이 있습니다.

App_Code 폴더에 파일을 하나 만들어서 거기다가 클래스를 만들어서 쓰는것이죠. 이것을 1의 방법이라고 하겠습니다.

이 폴더는 그러라고 있는것이니깐요.

여기서 잠깐 App_Code를 알아보자면 여기를 클릭!

그리고 무의미한 폴더를 하나 만들어서 App_Code처럼 쓰기... 이것을 2의 방법이라고 하겠습니다.

적고보니 같은 말같네요.

 

App_Code를 사용하면 모든게 된것 같지만..

실제 접근적인 문제도 있고 약간 편법적인 방법을 사용해야 할때도 있고 2개의 방법 다 고루고루 사용하게되지않나 싶네요.

 

사용방법...

우선 폴더를 만든다.

솔루션 탐색기에서 프로젝트명에서 마우스 오른쪽을 누르면 메뉴가 뜹니다.

거기서 [추가] - [ASP.NET 폴더 추가] - [App_Code] 를 누르면 App_Code 폴더가 만들어집니다. 이게 1의 방법 폴더 만들기.

2의 방법은 그냥 [추가] - [새 폴더] 해서 원하는 이름의 폴더를 만드시면 됩니다.

그리고 안에 클래스 파일을 추가하면 됍니다.

각자 만드신 폴더에서 마우스 오른쪽으로 메뉴 호출 하셔서 [추가] - [클래스] 합니다. 클래스명은 편하신걸로 하세요.

저는 [FunctionUser] 로 했습니다.

 

자 그리고 원하시는 클래스를 하나 만드십시오.

그 클래스 명은 FnSample 이라고 하겠습니다.

[FunctionUser.cs]

 

namespace ProjectTitle.App_Code

{

    public class FunctionUser

    {

        public string FnSample()

        {

            return "Hello";

        }

    }

}

 

자 그러명 FunctionUser.cs 에는 FnSample 라는 클래스가 존재합니다.

 

이걸 사용하는 곳은 test.cs 라고 하겠습니다.

test.cs 에서는 선언을 해야 합니다. 저는 컨트롤러로 만들었습니다.

App_Code를 사용하면 [using 프로젝트명.App_Code;]

2의 방법이라면 [using 프로젝트명.추가한폴더명;]

 

[test.cs]

 

using ProjectTitle.App_Code;    ( 만약 2의 방법이라면 using ProjectTitle.추가한폴더명; )

 

namespace ProjectTitle.Controllers

{

    public class BoardController : Controller

 

    FunctionUser FnUser = new FunctionUser();    (여기가 이렇게 추가됨)

 

    public ActionResult Index()

    {

        // 이 아래쪽도 약간 바뀜.

        viewBag = FnUser.FnSample();

        // viewBag = 추가한폴더명.FnSample();    // 만약 2의 방법이라면 이렇게 사용하시면 됩니다.

        return view();

    }

    ...

}

 

 

 

 

아래와 같은 형태로도 가능하다.

하지만 이럴 경우 FunctionUser.cs에서 선언된 부분에 static 을 선언해줘야 한다.

public string FnSample() -> public static string FnSample()

 

[test.cs]

 

using ProjectTitle.App_Code;    ( 만약 2의 방법이라면 using ProjectTitle.추가한폴더명; )

 

namespace ProjectTitle.Controllers

{

    public class BoardController : Controller

 

    public ActionResult Index()

    {

        viewBag = FunctionUser.FnSample();

        // viewBag = 추가한폴더명.FnSample();    // 만약 2의 방법이라면 이렇게 사용하시면 됩니다.

        return view();

    }

    ...

}

 

왜 똑같냐고 생각할분이 있을것 같아서 다시 말해드리지만.. 원래 사용법이 똑같다!!!

대부분 App_Code 형태로 쓰겠지만....

2의 방법의 경우는 App_Code를 사용하기 힘든 경우 사용하는것이 대부분의 이유이고 2번의 방법을 사용하는 경우 중에서 Asp.net Mvc로 사용할 경우 컨트롤러를 클래스처럼 사용하는게 더 편한것 같습니다. 꼭 연결된 뷰가 아니더라도 뷰에서 다른 컨트롤러에 접근하기도 용이한게 그 이유인데 편하실대로 사용하십시오.


 

참고!!

App_Code 폴더에다가 파일을 생성하면 컴파일이 문제가 생길수 있다.

그럴경우에는 App_Code 폴더에 있는 파일에서 마우스 오른쪽으로 메뉴 호출후에 [속성] 클릭!

[속성] - [고급] - [빌드 작업][컴파일] 로 변경해주면 된다!

끝!!!