Blazor Wasm指定nl-NL文化格式化日期失效问题排查
问题原因
Blazor WASM 运行在浏览器环境中,.NET 默认只为这类应用打包有限的区域性资源(像 en-US、de-DE、es-ES、fr-FR 这类常用区域性),nl-NL 不在默认包含的范围内。当你调用未被包含的区域性进行格式化时,.NET 会自动回退到浏览器的默认区域性(你的环境是 en-US),所以荷兰文的日期格式会变成英文样式。
而 .NET Fiddle 基于完整的 .NET 运行环境,默认包含了所有区域性资源,因此 nl-NL 可以正常输出对应格式。
解决方案
要让 Blazor WASM 支持 nl-NL 区域性,只需在项目中手动配置包含对应的资源即可:
步骤1:修改项目配置文件
打开 Blazor WASM 项目的 .csproj 文件,在 <PropertyGroup> 节点下添加 <SupportedCultures> 配置,明确列出需要支持的区域性:
<Project Sdk="Microsoft.NET.Sdk.BlazorWebAssembly"> <!-- 其他原有配置 --> <PropertyGroup> <!-- 已有的项目属性 --> <SupportedCultures>en-US;de-DE;es-ES;fr-FR;nl-NL</SupportedCultures> </PropertyGroup> </Project>
步骤2:重新构建项目
保存配置文件后,重新构建你的 Blazor WASM 应用。此时 nl-NL 的区域性资源会被打包到应用中,日期格式化就能按照预期工作了。
验证效果
修改完成后,你的原有代码:
@DateTime.Now.Date.ToString("D", new CultureInfo("en-US"))<br /> @DateTime.Now.Date.ToString("D", new CultureInfo("de-DE"))<br /> @DateTime.Now.Date.ToString("D", new CultureInfo("es-ES"))<br /> @DateTime.Now.Date.ToString("D", new CultureInfo("fr-FR"))<br /> @DateTime.Now.Date.ToString("D", new CultureInfo("nl-NL"))
将正确输出 nl-NL 对应的长日期格式。
内容的提问来源于stack exchange,提问作者Flippowitsch
相关产品推荐
相关产品推荐

