@page "/admin/faqs" @attribute [Authorize] @using TaxBaik.Web.Services @using TaxBaik.Domain.Entities @inject IFaqBrowserClient FaqClient @inject NavigationManager Navigation @inject IJSRuntime JS FAQ 관리
홈페이지

FAQ 관리

홈페이지 자주 묻는 질문을 등록하고 순서를 관리합니다.

FAQ 등록
@if (faqs is null) { } else if (!faqs.Any()) {
등록된 FAQ가 없습니다.
} else {
@foreach (var item in faqs) { }
순서 질문 카테고리 상태
@item.SortOrder @item.Question @(string.IsNullOrEmpty(item.Category) ? "" : item.Category) @(item.IsActive ? "노출 중" : "비활성")
총 @(faqs.Count)개 · 노출 중 @(faqs.Count(f => f.IsActive))개
}
@code { [CascadingParameter] private Task? AuthStateTask { get; set; } private List? faqs; protected override async Task OnAfterRenderAsync(bool firstRender) { if (firstRender && AuthStateTask != null) { var authState = await AuthStateTask; if (authState.User.Identity?.IsAuthenticated == true) { await LoadAsync(); StateHasChanged(); } } } private async Task LoadAsync() { try { faqs = (await FaqClient.GetAllAsync()).ToList(); } catch (Exception ex) { await JS.InvokeVoidAsync("alert", $"오류: {ex.Message}"); faqs = []; } } private async Task DeleteAsync(Faq item) { var confirmed = await JS.InvokeAsync("confirm", $"'{item.Question}' 항목을 삭제하시겠습니까?"); if (!confirmed) return; try { var success = await FaqClient.DeleteAsync(item.Id); if (success) { await JS.InvokeVoidAsync("alert", "FAQ가 삭제되었습니다."); await LoadAsync(); } else { await JS.InvokeVoidAsync("alert", "삭제 실패"); } } catch (Exception ex) { await JS.InvokeVoidAsync("alert", $"오류: {ex.Message}"); } } }