ASP.NET Core 3.1 C#かみそりページアプリケーションがあり、これもいくつかのBlazorサーバー側かみそりコンポーネントを使用しています。私はそれをIISに公開しています。しかし、Chrome 1つのandorid携帯電話でサイトを閲覧すると、定期的にメッセージが表示されます:
サーバーに再接続しようとしています
また、ユーザーがしばらく非アクティブなままの場合も同様です。携帯電話のディスプレイをオフにすると、メッセージが表示されます
サーバーから切断。ページを再読み込み...
このサイトは英語ではなく、これらの一般的なメッセージはエンドユーザーの経験には適していません。それらのメッセージを無効にする方法、または少なくともそれらを別の言語に翻訳する方法はありますか?
これまでのところ、サーバー側のBlazorコンポーネントを含まないページでBlazorオーバーレイを無効にする方法を見つけました。それは非常に簡単です。空のインターフェースIPageWithBlazor
を作成し、サーバーサイドのBlazorを含むかみそりページのすべてのモデルにこの空のインターフェースを実装させました。これで、_Layout.cshtml
で次の条件を使用できます。
@if (this.Model is IPageWithBlazor)
{
<script type="text/javascript" src="~/js/blazor.polyfill.min.js"></script>
<script src="~/_framework/blazor.server.js"></script>
}
メッセージの翻訳については トピックをカバーする別の質問 があります。
実際、サーバー側のBlazorにも答えがあります。これによると: ASP.NET Core Blazorホスティングモデル 、表示されるオーバーレイを操作するために、_components-reconnect-modal
_の本文にid __Host.cshtml
_のdiv要素を定義できます。接続が失われた場合。
これは次のようになります。
_<body>
...
<!-- Blazor overlay -->
<div id="components-reconnect-modal"></div>
<app>
@(await Html.RenderComponentAsync<App>(RenderMode.ServerPrerendered))
</app>
...
</body>
_
Blazorは、アプリの状態に応じてこれらのカスタムクラスを適用します。ドキュメントによると、これらのクラスは有効です:
components-reconnect-show
_:接続が失われました。クライアントは再接続を試みています。モーダルを表示します。次に、CSSを使用してスクリーンオーバーレイにカスタムスタイルを適用できます。それらをすべて削除したい場合は、まったく表示しないように選択できます。components-reconnect-hide
_:サーバーへのアクティブな接続が再確立されます。モーダルを非表示にします。components-reconnect-failed
_:おそらくネットワーク障害が原因で、再接続に失敗しました。再接続を試みるには、window.Blazor.reconnect()
を呼び出します。components-reconnect-rejected
_:再接続が拒否されました。サーバーに到達しましたが接続を拒否し、サーバー上のユーザーの状態は失われました。アプリをリロードするには、location.reload()
を呼び出します。たとえば、オーバーレイを完全に非表示にするには、次のCSSを追加できます。
_.components-reconnect-show, .components-reconnect-failed, .components-reconnect-rejected {
display: none;
}
_
オーバーレイのカスタム外観が必要な場合は、__Host.cshtml
_のdivに好みのコンテンツを入力するだけです。
_<div id="components-reconnect-modal" class="my-reconnect-modal components-reconnect-hide">
<div class="show">
<p>
// Message when attempting to connect to server
</p>
</div>
<div class="failed">
<p>
// Message when failing to connect
</p>
</div>
<div class="rejected">
<p>
// Message when refused
</p>
</div>
_
サーバー側のBlazorでしか機能しないため、これがクライアント側で機能するかどうかはわかりません。これがうまくいくことを願っています。