.NET 8 RC1(正確にはPreview 6?)からblazorserverプロジェクトテンプレートが無くなってしまった。
.NET Blogによると、
.NET 8 では、Web UI のすべてのニーズに Blazor コンポーネントのフルスタックを使用できるように、Blazor に機能を追加してきました。 要求に応じてサーバーから Blazor コンポーネントを静的にレンダリングし、強化されたナビゲーションとフォーム処理でエクスペリエンスを段階的に強化し、サーバーでレンダリングされた更新をストリーミングし、Blazor Server または Blazor WebAssembly を使用して必要な場合に豊かな対話機能を追加できるようになりました。 アプリの読み込み時間を最適化するために、Blazor は実行時に Blazor Server と Blazor WebAssembly のどちらを使用するかを自動選択することもできます。
とのこと。
Server SideのBlazorコンポーネントを動かすには、blazorプロジェクトテンプレートを使用する必要がある。このテンプレートのオプションを見ると、デフォルトでServer Sideを使用するらしい。
The default value is false.
Type: bool
Default: false
-us, –use-server Configures whether to support rendering components interactively on the server via a SignalR WebSocket connection.
The default value is true.
Type: bool
Default: true
で、blazorテンプレートでコンポーネントを作ってみたのだが、イベントのハンドリングとかが全然動作しない。.NET Blogの記事を見てもよくわからないし、他の記事でもRC1以前のものばかりで良く分からない。
仕方ないので、サンプルのCounterコンポーネントを見てみると、先頭に以下のようなディレクティブが・・・
@page "/counter"
@attribute [RenderModeServer]
どうもこの属性を指定しないと、サーバーサイドでレンダリングされないようだ。
とりあえず、この属性を指定したら、コンポーネントが動作するようになった。
結構、破壊的な変更だよね。