Blazor 服务器区域性是否通过 URL 设置?

Zhi Lv - MSFT 32,446 信誉分 Microsoft 供应商
2024-03-14T07:32:53.7566667+00:00

大家好;

阅读本部分,在 Blazor 中为用户设置区域设置的方法如下:

 Navigation.NavigateTo(
                    $"Culture/Set?culture={cultureEscaped}&redirectUri={uriEscaped}",
                    forceLoad: true);

这是对的吗?这是一个让我感到非常复杂的解决方案。

然后设置它是否为会话/电路设置它?对于从 IStringLocalizer 返回的字符串和日期/数字格式?

另外,如果我不导航到此 url,假设会话/线路的区域性是在用户浏览器中设置的,这是否正确?

注意: 此问题总结整理于:Blazor 服务器区域性是否通过 URL 设置?

Blazor
Blazor
一个免费的开源 Web 框架,使开发人员能够使用 Microsoft 开发的 C# 和 HTML 创建 Web 应用。
23 个问题
0 个注释 无注释
{count} 票

接受的答案
  1. XuDong Peng-MSFT 10,746 信誉分 Microsoft 供应商
    2024-03-15T01:36:05.2966667+00:00

    你好,

    众所周知,在 Blazor Server 应用程序中,通信或导航基于 SignalR 线路 (WebSockets)。因此,如果本地化方案基于 URL 路径或查询字符串,则该方案可能无法与 WebSocket 一起使用,从而无法保留区域性。因此,推荐的方法是使用本地化区域性 cookie,它将确保 WebSocket 连接可以正确传播该区域性。请参阅本文的按用户首选项动态设置服务器端区域性部分,查看保留用户区域性选择的示例 Razor 表达式。

    因此,它将使用以下代码通过本地化 cookie 实现基于重定向的方法。应用通过重定向到控制器来保留用户选择的区域性。控制器将用户选择的区域性设置为 Cookie,并将用户重定向回原始 URI。

    Navigation.NavigateTo(
                        $"Culture/Set?culture={cultureEscaped}&redirectUri={uriEscaped}",
                        forceLoad: true);
    

    如果答案是正确的,请点击“接受答案”并点赞。 如果您对此答案还有其他疑问,请点击“评论”。 注意:如果您想接收相关电子邮件,请按照我们的文档中的步骤启用电子邮件通知 此线程的通知。

    0 个注释 无注释

0 个其他答案

排序依据: 非常有帮助

你的答案

问题作者可以将答案标记为“接受的答案”,这有助于用户了解已解决作者问题的答案。