スポンサーリンク
スポンサーリンク

ASP.NET Core で読み込む cssファイルを動的に変更する

ASP.NET CoreC#CSSVisual Studio

HTMLの<head>で読み込まれるcssファイルをJavaScriptで変更する場合、 HTMLドキュメントが全て読み込まれた後じゃないとJavaScriptは実行されないので、画面初期表示される前にcssファイルをJavaScriptから変更することはできない。

画面初期表示のcssファイルをログインユーザー毎に変更したい場合、サーバーサイドで切り替える必要がある。
ASP.NET Core は、HTMLの<head>は _Layout.cshtml ビューに書かれているので、 _Layout.cshtml に依存関係の挿入(@inject)とRazor処理を追加することで実装できる。下記は ASP.NET Core 2.2 で実装した例。

 

依存関係の挿入(@inject)で使うサービスクラスを作成する。

UserSettingService.cs

 

ASP.NET Coreサービスの起動設定処理に、新規作成したUserSettingServiceサービスクラスを追加する。

Startup.cs

 

_Layout.cshtmlビューに、@using、@inject、@if を追加し、サーバーサイドで、ログインユーザー毎にcssファイル(site.css / site-black.css)を切り替える処理を実装する。

_Layout.cshtml

 

ビューとコントローラーの両方で使う定数。

enums.cs

 

参考
ASP.NET Core でのビューへの依存関係の挿入

 

コメント

タイトルとURLをコピーしました