c# - 将 Asp.net Core 中的 CultureInfo 设置为具有 .作为 CurrencyDecimalSeparator 而不是 ,

标签 c# asp.net-core

我要疯了。我只想将整个 Asp.net 核心应用程序中使用的文化设置为“en-US”。但似乎没有任何效果。我在哪里设置整个应用程序的文化?我对客户端浏览器文化不感兴趣。似乎唯一改变它的是改变 Windows 的语言设置。我只希望文化由应用程序本身决定,而不是由客户决定。

到目前为止我尝试了什么:

  • 设置<system.web><globalization uiCulture="en" culture="en-US" /></system.web>在 web.config 中
  • 设置System.Threading.Thread.CurrentThread.CurrentCulture = cultureInfo;CurrentUICulture在 Startup.Configure 中,甚至在 Controller 中。
  • 使用 app.UseRequestLocalization(..如下图

        var enUsCulture = new CultureInfo("en-US");
        var localizationOptions = new RequestLocalizationOptions()
        {
            SupportedCultures = new List<CultureInfo>()
            {
                enUsCulture
            },
            SupportedUICultures = new List<CultureInfo>()
            {
                enUsCulture
            },
            DefaultRequestCulture = new RequestCulture(enUsCulture),
            FallBackToParentCultures = false,
            FallBackToParentUICultures = false,
            RequestCultureProviders = null
        };
    
        app.UseRequestLocalization(localizationOptions);
    

但似乎没有什么可以将 CurrencyDecimalSeparator 从 (nl-NL) 更改为 (en-US)。

文化如何设置?

编辑: @索伦 这就是配置方法的样子。我在 DetermineProviderCultureResult 上设置了一个断点但它在访问该网站时从未被击中。

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory, FinOsDbContext context)
    {
        loggerFactory.AddConsole(Configuration.GetSection("Logging"));
        loggerFactory.AddDebug();

        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
            app.UseDatabaseErrorPage();
            app.UseBrowserLink();
        }
        else
        {
            app.UseExceptionHandler("/Home/Error");
        }

        app.UseStaticFiles();

        app.UseIdentity();

        // Add external authentication middleware below. To configure them please see http://go.microsoft.com/fwlink/?LinkID=532715

        app.UseMvc(routes =>
        {
            routes.MapRoute(
                name: "default",
                template: "{controller=Home}/{action=Index}/{id?}");
        });

        //TODO: Clean up
        //var cultureInfo = new CultureInfo("en-US");
        //System.Threading.Thread.CurrentThread.CurrentCulture = cultureInfo;
        //System.Threading.Thread.CurrentThread.CurrentUICulture = cultureInfo;

        app.UseRequestLocalization();

        // UseCookieAuthentication..
        // UseJwtBearerAuthentication..

        //add userculture provider for authenticated user
        var requestOpt = new RequestLocalizationOptions();
        requestOpt.SupportedCultures = new List<CultureInfo>
        {
            new CultureInfo("en-US")
        };
        requestOpt.SupportedUICultures = new List<CultureInfo>
        {
            new CultureInfo("en-US")
        };
        requestOpt.RequestCultureProviders.Clear();
        requestOpt.RequestCultureProviders.Add(new SingleCultureProvider());

        app.UseRequestLocalization(requestOpt);

        FinOsDbContext.Initialize(context);
        FinOsDbContext.CreateTestData(context);
    }

    public class SingleCultureProvider : IRequestCultureProvider
    {
        public Task<ProviderCultureResult> DetermineProviderCultureResult(HttpContext httpContext)
        {
            return Task.Run(() => new ProviderCultureResult("en-US", "en-US"));
        }
    }

最佳答案

这就是为我解决的问题:

StartUp.Configure 中设置以下内容

var cultureInfo = new CultureInfo("en-US");
cultureInfo.NumberFormat.CurrencySymbol = "€";

CultureInfo.DefaultThreadCurrentCulture = cultureInfo;
CultureInfo.DefaultThreadCurrentUICulture = cultureInfo;

关于c# - 将 Asp.net Core 中的 CultureInfo 设置为具有 .作为 CurrencyDecimalSeparator 而不是 ,,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40442444/

相关文章:

javascript - 如何使这个书架网格具有拖动/选择功能?

c# - 在 ASP.NET Core MVC 中为客户端验证配置区域性

c# - 相关 ICollection 实体不能为空

c# - OnRelease 期间的异常是否会导致组件无法正确处置?

c# - 使用 websocket-sharp for .NET 服务器如何关闭 WebSocketBehavior?

c# - ASP.NET MVC 3 RC - Razor "View"属性

c# - 转换为日期时间

c# - colspan GridView 行

azure - 升级到 ASP.NET 5 beta5 后如何进一步调试 500 内部服务器错误

c# - 加载数据本地 INFILE 无法在 .net 核心上工作