ASP.NET Core MVC에서 appsettings.json을 이용한 날짜/시간 선택기 설정

  • 3 minutes to read

이 문서는 appsettings.json 파일의 설정을 통해 웹 페이지의 날짜/시간 선택기에서 초 단위를 포함할 것인지 제외할 것인지를 결정하는 방법을 설명합니다.

1. appsettings.json 설정 추가

appsettings.json 파일에 아래와 같은 설정을 추가합니다:

{
  "Settings": {
    "IncludeSeconds": false
  },
  // 기타 설정들...
}

기본적으로 초를 포함하지 않도록 설정합니다. 필요에 따라 이 값을 true로 변경하여 초를 포함하게 할 수 있습니다.

2. Startup.cs에서 설정 로드

먼저 바인딩에 사용할 모델 클래스를 정의합니다:

public class SiteSettings
{
    public bool IncludeSeconds { get; set; }
}

이후 Startup.csConfigureServices 메서드에서 설정을 바인딩합니다:

public void ConfigureServices(IServiceCollection services)
{
    services.Configure<SiteSettings>(Configuration.GetSection("Settings"));

    // 기타 설정들...
}

3. 뷰에서 설정 사용하기

뷰에 전달하기 위한 뷰 모델을 작성합니다:

public class DateInputViewModel
{
    public bool IncludeSeconds { get; set; }
}

컨트롤러에서는 아래와 같이 설정 값을 뷰 모델로 바인딩합니다:

public IActionResult MyAction()
{
    var settings = new SiteSettings();
    _configuration.GetSection("Settings").Bind(settings);
    var viewModel = new DateInputViewModel
    {
        IncludeSeconds = settings.IncludeSeconds
    };
    return View(viewModel);
}

뷰에서는 뷰 모델의 설정 값을 사용하여 날짜/시간 선택기의 형식을 결정합니다:

@model DateInputViewModel

@if(Model.IncludeSeconds)
{
    <input type="datetime-local" />
}
else
{
    // 초를 제외하고 표시
    <input type="datetime-local" step="60" />
}

이렇게 설정하면 appsettings.json의 설정에 따라 웹 페이지의 날짜 및 시간 선택기의 형식을 동적으로 변경할 수 있습니다.

4. MVC 뷰에서 직접 Settings 값을 읽기

MVC 뷰에서 직접 설정 값을 읽어들이려면 먼저 IOptions를 사용하여 바인딩된 설정 값을 주입받아야 합니다.

4.1. 뷰에 DI (Dependency Injection) 설정

뷰에서 서비스나 설정 값을 주입받기 위해 _ViewImports.cshtml 파일에 아래 코드를 추가합니다:

@using Microsoft.Extensions.Options
@inject IOptions<SiteSettings> SiteSettings

4.2. 뷰에서 설정 사용

이제 뷰에서 SiteSettings 객체를 통해 설정 값을 직접 읽을 수 있습니다. 예를 들면:

@if(SiteSettings.Value.IncludeSeconds)
{
    <input type="datetime-local" />
}
else
{
    <input type="datetime-local" step="60" />
}

이렇게 하면 컨트롤러를 거치지 않고 뷰에서 직접 appsettings.json의 설정 값을 읽어올 수 있습니다. 하지만, 일반적으로 MVC 패턴에서는 컨트롤러를 통해 모든 데이터를 뷰에 전달하는 것이 좋은 습관입니다. 직접 읽는 방법은 특정 케이스에서만 사용하는 것이 좋습니다.

더 깊이 공부하고 싶다면
DevLec에서는 실무 중심의 C#, .NET, ASP.NET Core, Blazor, 데이터 액세스 강좌를 단계별로 제공합니다. 현재 수강 가능한 강좌 외에도 더 많은 과정이 준비되어 있습니다.
DevLec.com에서 자세한 커리큘럼을 확인해 보세요.
DevLec 공식 강의
C# Programming
C# 프로그래밍 입문
프로그래밍을 처음 시작하는 입문자를 위한 C# 기본기 완성 과정입니다.
ASP.NET Core 10.0
ASP.NET Core 10.0 시작하기 MVC Fundamentals Part 1 MVC Fundamentals Part 2
웹 애플리케이션의 구조와 MVC 패턴을 ASP.NET Core로 실습하며 익힐 수 있습니다.
Blazor Server
풀스택 웹개발자 과정 Part 1 풀스택 웹개발자 과정 Part 2 풀스택 웹개발자 과정 Part 3
실무에서 바로 활용 가능한 Blazor Server 기반 관리자·포털 프로젝트를 만들어 봅니다.
Data & APIs
Entity Framework Core 시작하기 ADO.NET Fundamentals Blazor Server Fundamentals Minimal APIs
데이터 액세스와 Web API를 함께 이해하면 실무 .NET 백엔드 개발에 큰 도움이 됩니다.
VisualAcademy Docs의 모든 콘텐츠, 이미지, 동영상의 저작권은 박용준에게 있습니다. 저작권법에 의해 보호를 받는 저작물이므로 무단 전재와 복제를 금합니다. 사이트의 콘텐츠를 복제하여 블로그, 웹사이트 등에 게시할 수 없습니다. 단, 링크와 SNS 공유, Youtube 동영상 공유는 허용합니다. www.VisualAcademy.com
박용준 강사의 모든 동영상 강의는 데브렉에서 독점으로 제공됩니다. www.devlec.com