[.NET Core] ASP.NET Core 3.1 Areas(영역) 추가 방법

728x90
반응형

 

ASP.NET MVC를 사용해보신 분들이라면 영역 Areas 관련해서 기본적인 지식이 있을겁니다.

닷넷 코어 3.1 로 개발을 진행할때 Areas를 어떻게 추가해야하는지 정리하였습니다. 

 


1. Areas 폴더 추가

기존 ASP.NET MVC의 경우는 프로젝트 영역에서, 오른쪽 마우스 버튼을 클릭하면 영역 (A)를 추가 하는 메뉴가 보였었는데요. ASP.NET Core 로 프로젝트를 진행하면, 최초 추가 항목에 영역 (A)가 보이지 않는 것을 확인 할 수 있습니다. 

이때 먼저 프로젝트에 새 폴더 를 추가해 줍니다. 

 

 

새 폴더를 추가 하고 이름을 Areas 로 변경 해 줍니다. 

 

 


2. Areas 폴더에 영역 추가

Areas 폴더에서 오른쪽 마우스 버튼을 클릭하고 나오는 추가 메뉴 영역에 들어가면, 이제서야 영역 (A) 추가 메뉴가 보이는 것을 확인 하실 수 있습니다. 

 

이제 원하는 이름을 선택해서, 영역을 생성해 줍니다. 저는 Admin 이라는 영역 (Areas)를 추가하였습니다.

이제 ASP.NET MVC 와 비슷한 형태로 생성이 되는 것을 확인 할 수 있습니다. 

 


3. Scaffolding 체크

ASP.NET Core 3.1 에서 Areas를 처음 생성하면, 루트 영역에 아래와 같은 txt 파일이 생성이 됩니다. 

이는 Startup.cs 파일에 아래와 같이 라우팅을 진행하라는 readme 형태의 설명 파일입니다. 

 

ScaffoldingReadMe.txt

Scaffolding has generated all the files and added the required dependencies.

However the Application's Startup code may required additional changes for things to work end to end.
Add the following code to the Configure method in your Application's Startup class if not already done:

        app.UseMvc(routes =>
        {
          routes.MapRoute(
            name : "areas",
            template : "{area:exists}/{controller=Home}/{action=Index}/{id?}"
          );
        });

 


 

4. Controller 추가

Areas를 테스트 하기 위해 하나의 Controller를 추가해 줍니다.
Admin Areas에서 사용할 HomeController를 추가했습니다.

 

 

HomeController이 원하는 위치에 생성되었습니다.

 

테스트를 위해 Index IActionResult에 뷰를 추가 해줍니다.

 

Index 라는 이름으로 View를 추가 합니다.

 

Areas의 Views 폴더 밑에 Home 폴더 밑으로 정상적으로 들어갔습니다.

 

 

이제 HomeController에 Area 이름을 정의해줘야 합니다.

해당 컨트롤러의 Area가 Admin 이라는 것을 Area 어트리뷰트를 이용해서 정의 해주고, 

기본적인 라우트도 정의해 줍니다.

public class HomeController : Controller
{
    [Area("Admin")]
    [Route("Admin/[Controller]/[action]")]
    public IActionResult Index()
    {
        return View();
    }
}

 

 


 

5. StartUp.cs 파일 수정

기본적인 Areas 를 생성 하였다면, Startup.cs 파일의 Configuration 메소드에 기본적인 Route를 설정 해 줘야 합니다. 

ASP.NET Core 2.2 버전까지는 UseMvc() 를 이용해서 적용하였는데, 

3.1 버전에서는 UseEndpoints() 를 이용해서 기본적인 라우팅을 설정합니다. 

이에 대한 차이는 확인 후 포스팅 할 예정입니다.

 

아래와 같이 areas와 연결될 라우팅을 설정합니다.

여기서 주의해야 할 사항은 기본 default 라우팅 보다 하단에 위치해야 합니다. 

위에 있는 라우팅 패턴을 기본으로 인식합니다.

app.UseEndpoints(endpoints =>
{
    endpoints.MapControllerRoute(
        name: "default",
        pattern: "{controller=Home}/{action=Index}/{id?}");
        
    endpoints.MapAreaControllerRoute(
        name:"MyAdmin", 
        areaName: "Admin",
        pattern: "{area:exists}/{controller=Home}/{action=Index}/{id?}");
});

 

 

빌드 이후 Admin/Home/Index 경로를 입력하면, Areas가 정상적으로 라우팅 된 것을 확인 할 수 있습니다. 

ASP.NET Core 프로젝트에서 영역 추가에 대해서 MSDN에는 정의가 되어 있지만, 실질적인 추가에 대해서는 자세하게 명시가 안되있어서 처음 추가할 때 애를 먹었던 기억입니다.

위 방법데로 추가 하시면 원하는 Areas를 추가 하실 수 있습니다. 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90