C# Blazor에서 "Y", "N" 값을 가진 필드를 CheckBox와 바인딩할 때 가장 표준적이고 깔끔한 방법입니다.
구조는 다음과 같습니다:
실제 모델 값은 문자열(
"Y"/"N")UI에서는 bool 타입 프로퍼티로 변환하여 사용
getter/setter에서 변환 처리
코드 설명
csharp복사편집<TelerikCheckBox @bind-Value="isUnconfirmedAge"></TelerikCheckBox> 연령대 미확인
@code {
// 실제 모델의 속성은 string 타입 ("Y" 또는 "N")
CustomerModel modelCustomer = new CustomerModel();
// 바인딩용 프로퍼티 (bool)
bool isUnconfirmedAge
{
get => modelCustomer.IS_UNCONFIRMED_AGE == "Y";
set => modelCustomer.IS_UNCONFIRMED_AGE = value ? "Y" : "N";
}
}
getter:
"Y"면true, 그 외(또는"N")면falsesetter:
true면"Y",false면"N"저장
실전에서 자주 쓰는 패턴
이 방식은 타겟 데이터가 "Y", "N" 또는 "T", "F" 등 문자열로 저장될 때 CheckBox, Switch 등 bool UI 컨트롤에 바인딩할 때 항상 씁니다.
참고: null 허용 시
만약 null이 올 수 있다면 (예: "Y", "N", null) 아래처럼 null 처리도 추가하세요:
csharp복사편집bool isUnconfirmedAge
{
get => modelCustomer.IS_UNCONFIRMED_AGE == "Y";
set => modelCustomer.IS_UNCONFIRMED_AGE = value ? "Y" : "N";
}
필요하다면 modelCustomer.IS_UNCONFIRMED_AGE ?? "N" 이런식으로도 가능.
여러개 사용 예시
csharp복사편집<TelerikCheckBox @bind-Value="isMan"></TelerikCheckBox> 남성
<TelerikCheckBox @bind-Value="isWoman"></TelerikCheckBox> 여성
@code {
bool isMan
{
get => modelCustomer.GENDER == "M";
set => modelCustomer.GENDER = value ? "M" : "F";
}
bool isWoman
{
get => modelCustomer.GENDER == "F";
set => modelCustomer.GENDER = value ? "F" : "M";
}
}
(※ 위처럼 성별 등 한 개만 선택 가능하면 Radio 사용 추천)
요약
getter/setter 패턴으로 bool <-> string 변환
UI에서는 bool 바인딩
Model에는 string 저장
질문하신 코드 그대로 사용하시면 됩니다!
추가적인 패턴, 자동화 방법, 확장성(예: 여러 필드) 등이 궁금하시면 말씀해 주세요.