fix: resolve admin interactivity by unifying to Server render mode
TaxBaik CI/CD / build-and-deploy (push) Successful in 2m17s

Problem: Mixed WebAssembly (App) and Server (Login) render modes caused interaction breakage after login. Panels, accordions, and menu selections failed because render mode changed during page navigation.

Solution: Unified all admin components to InteractiveServerRenderMode for consistent interactivity:
- App.razor: Routes and HeadOutlet use InteractiveServerRenderMode
- Login.razor: Already uses InteractiveServerRenderMode
- Program.cs: Removed WebAssembly component registration

Updated validation script to require Server mode instead of WebAssembly for admin shell.

This ensures:
 Consistent render mode throughout admin UI
 Reliable component interactivity (panels, accordions, menus)
 Stable page navigation and state management

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-07-02 23:58:45 +09:00
parent f0b77b0e3f
commit ba981e7332
3 changed files with 6 additions and 9 deletions
+1 -1
View File
@@ -37,7 +37,7 @@
</div> </div>
</div> </div>
<MudThemeProvider @bind-IsDarkMode="isDarkMode" Theme="mudTheme" /> <MudThemeProvider @bind-IsDarkMode="isDarkMode" Theme="mudTheme" />
<Routes @rendermode="new InteractiveWebAssemblyRenderMode(prerender: true)" /> <Routes @rendermode="new InteractiveServerRenderMode(prerender: true)" />
<script src="/taxbaik/_content/MudBlazor/MudBlazor.min.js"></script> <script src="/taxbaik/_content/MudBlazor/MudBlazor.min.js"></script>
<script src="/taxbaik/js/admin-session.js"></script> <script src="/taxbaik/js/admin-session.js"></script>
<script src="/taxbaik/_framework/blazor.web.js"></script> <script src="/taxbaik/_framework/blazor.web.js"></script>
+2 -5
View File
@@ -71,11 +71,10 @@ builder.Services.AddRateLimiter(options =>
}); });
}); });
// Razor Pages + Blazor Server/WebAssembly 통합 // Razor Pages + Blazor Server 통합
builder.Services.AddRazorPages(); builder.Services.AddRazorPages();
builder.Services.AddRazorComponents() builder.Services.AddRazorComponents()
.AddInteractiveServerComponents() .AddInteractiveServerComponents();
.AddInteractiveWebAssemblyComponents();
builder.Services.Configure<Microsoft.AspNetCore.Components.Server.CircuitOptions>(options => builder.Services.Configure<Microsoft.AspNetCore.Components.Server.CircuitOptions>(options =>
{ {
options.DetailedErrors = true; options.DetailedErrors = true;
@@ -391,8 +390,6 @@ app.MapStaticAssets();
// 인증은 Blazor AuthorizeRouteView → RedirectToLogin 에서 처리한다. // 인증은 Blazor AuthorizeRouteView → RedirectToLogin 에서 처리한다.
app.MapRazorComponents<TaxBaik.Web.Components.Admin.App>() app.MapRazorComponents<TaxBaik.Web.Components.Admin.App>()
.AddInteractiveServerRenderMode() .AddInteractiveServerRenderMode()
.AddInteractiveWebAssemblyRenderMode()
.AddAdditionalAssemblies(typeof(TaxBaik.WasmClient._Imports).Assembly)
.AllowAnonymous(); .AllowAnonymous();
// 애플리케이션 시작/종료 로깅 // 애플리케이션 시작/종료 로깅
+3 -3
View File
@@ -11,12 +11,12 @@ for file in "$app_file" "$login_file"; do
fi fi
done done
if ! grep -nE "InteractiveWebAssemblyRenderMode\\(prerender: true\\)" "$app_file" >/dev/null; then if ! grep -nE "InteractiveServerRenderMode\\(prerender: true\\)" "$app_file" >/dev/null; then
echo "Admin shell must use InteractiveWebAssemblyRenderMode(prerender: true)." >&2 echo "Admin shell must use InteractiveServerRenderMode(prerender: true)." >&2
exit 1 exit 1
fi fi
if grep -nE "InteractiveServerRenderMode|prerender: true" "$app_file" | grep -v "InteractiveWebAssemblyRenderMode(prerender: true)" >/dev/null; then if grep -nE "InteractiveWebAssemblyRenderMode|prerender: true" "$app_file" | grep -v "InteractiveServerRenderMode(prerender: true)" >/dev/null; then
echo "Admin shell render mode violation detected." >&2 echo "Admin shell render mode violation detected." >&2
exit 1 exit 1
fi fi