如何更改Blazor中的“无法重新连接到服务器”文本?

时间:2019-10-16 01:27:56

标签: asp.net-core .net-core blazor

我正在使用Blazor服务器端。

当Blazor应用断开与远程服务器的连接时,它将显示以下内容:

enter image description here

我想更改上面图像的文本(“无法重新连接到服务器...”等等)。

我想将其更改为我们国家的语言。

我找到了项目的文件,但对此一无所获。

如何更改它?谢谢。

3 个答案:

答案 0 :(得分:5)

Blazor应用程序将检查页面中是否存在 id = {{dialogId} 的html元素:

  1. 如果此类元素不存在,它将使用默认处理程序显示消息。
  2. 如果该元素存在,则该元素的class将为:
      尝试重新连接到服务器时
    • 设置为components-reconnect-show
    • 在连接服务器失败时设置为components-reconnect-failed
    • 如果浏览器到达服务器而服务器主动拒绝连接,则
    • 设置为components-reconnect-refused

默认情况下, dialogId components-reconnect-modal 。因此,您可以在页面中创建一个元素,然后使用CSS随意控制内容和样式。

演示:

例如,我创建了要显示在Pages/_Host.cshtml中的内容的三个部分:

<div id="components-reconnect-modal" class="my-reconnect-modal components-reconnect-hide">
    <div class="show">
        <p>
            This is the message when attempting to connect to server
        </p>
    </div>
    <div class="failed">
        <p>
            This is the custom message when failing 
        </p>
    </div>
    <div class="refused">
        <p>
            This is the custom message when refused
        </p>
    </div>
</div>

<app>
    @(await Html.RenderComponentAsync<App>(RenderMode.ServerPrerendered))
</app>

<script src="_framework/blazor.server.js"></script>

然后添加一些CSS来控制样式:

<style>
    .my-reconnect-modal > div{
        position: fixed;
        top: 0;
        right: 0;
        bottom: 0;
        left: 0;
        z-index: 1000;
        overflow: hidden;
        background-color: #fff;
        opacity: 0.8;
        text-align: center;
        font-weight: bold;
    }
    .components-reconnect-hide > div
    {
        display: none;
    }

    .components-reconnect-show > div
    {
        display: none;
    }
    .components-reconnect-show > .show
    {
        display: block;
    }

    .components-reconnect-failed > div
    {
        display: none;
    }
    .components-reconnect-failed > .failed
    {
        display: block;
    }

    .components-reconnect-refused >div
    {
        display: none;
    }
    .components-reconnect-refused > .refused
    {
        display: block;
    }
</style>

最后,当尝试连接或连接失败时,我们将收到以下消息:

enter image description here

答案 1 :(得分:3)

对于JavaScript而言,Blazor通过window.Blazor对象公开了一个很小的API。

此API的一部分是defaultReconnectionHandler,它使您能够自定义重新连接体验,包括为重试次数设置不同的选项。

但是,也可以只交换显示ReconnectionDisplay的逻辑

一个简单的实现看起来像这样,使您可以控制该过程:

function createOwnDisplay() {
    return {
        show: () => { alert("put code that shows a toast , ui, or whaterver here"); },
        hide: () => { console.log('foo'); },
        failed: () => { console.log('foo'); },
        rejected: () => { console.log('foo'); }
    };
}

Blazor.defaultReconnectionHandler._reconnectionDisplay = createOwnDisplay();

答案 2 :(得分:0)

在您的CSS中:

#components-reconnect-modal {
    display: none;
    position: fixed;
    top: 0px;
    right: 0px;
    bottom: 0px;
    left: 0px;
    z-index: 1000;
    overflow: hidden;
    background-color: rgb(255, 255, 255);
    opacity: 0.8;
    text-align: center;
    font-weight: bold;
}
#components-reconnect-modal.components-reconnect-show{
    display: block;
}
#components-reconnect-modal.components-reconnect-show div.reconnecting {
    display: block;
}
div.reconnecting {
    display: none;
}

#components-reconnect-modal.components-reconnect-failed {
    display: block;
}
#components-reconnect-modal.components-reconnect-failed div.failedToConnect {
    display: block;
}
div.failedToConnect {
    display: none;
}

#components-reconnect-modal.components-reconnect-rejected {
    display: block;
}
#components-reconnect-modal.components-reconnect-rejected div.connectionRejected {
    display: block;
}
div.connectionRejected {
    display: none;
}

#components-reconnect-modal.components-reconnect-hide {
    display: none;
}

在_Host正文中:

<div id="components-reconnect-modal">
    <div class="reconnecting">
        Подключение к серверу...
    </div>
    <div class="failedToConnect">
        Не удалось подключиться к серверу <input type="button" value="переподключиться" onclick="ReconnectToServer()" />
        <script>
            function ReconnectToServer() {
                window.Blazor.reconnect();
            }
        </script>
    </div>
    <div class="connectionRejected">
        Подключение к серверу прервано <input type="button" value="обновить страницу" onclick="ReloadPage()" />
        <script>
            function ReloadPage() {
                location.reload();
            }
        </script>
    </div>
</div>