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 패턴에서는 컨트롤러를 통해 모든 데이터를 뷰에 전달하는 것이 좋은 습관입니다. 직접 읽는 방법은 특정 케이스에서만 사용하는 것이 좋습니다.

VisualAcademy Docs의 모든 콘텐츠, 이미지, 동영상의 저작권은 박용준에게 있습니다. 저작권법에 의해 보호를 받는 저작물이므로 무단 전재와 복제를 금합니다. 사이트의 콘텐츠를 복제하여 블로그, 웹사이트 등에 게시할 수 없습니다. 단, 링크와 SNS 공유, Youtube 동영상 공유는 허용합니다. www.VisualAcademy.com
박용준 강사의 모든 동영상 강의는 데브렉에서 독점으로 제공됩니다. www.devlec.com