简单的解决方案
您可以在global.asax.cs 文件中设置文化,如下所示:
// using System.Globalization;
protected void Application_Start()
{
// Formatting numbers, dates, etc.
CultureInfo.DefaultThreadCurrentCulture = new CultureInfo("en-GB");
// UI strings that we have localized.
CultureInfo.DefaultThreadCurrentUICulture = new CultureInfo("en-GB");
}
调试
您可以使用它来检查您的文化:
Thread.CurrentThread.CurrentCulture.Name // it should return "en-GB"
文档
注意:从您的问题中很难准确判断问题出在哪里。由于您的问题没有具体说明您遇到此问题的具体情况:
假设您在任何时候都没有改变文化并且没有在任何地方发生任何强制格式化,那么上面的解决方案应该可以正常工作。
替代解决方案
这里有一些可供选择的选择:
1.) 覆盖InitializeCulture 方法
protected override void InitializeCulture()
{
var hidden = this.Request.Form["hidden"];
var culture = this.Request.Form[hidden];
if (!string.IsNullOrWhiteSpace(culture))
{
this.Culture = culture;
this.UICulture = culture;
}
base.InitializeCulture();
}
2.) 在程序集属性中设置文化
[assembly: AssemblyCulture("en-US")]
[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.MainAssembly)]
3.) 在页面属性中设置文化
<%@ Page Culture="en-US" UICulture="en-US" Title="..." %>
// Razor Symtax
@{
Page.Culture = "en-US"
Page.UICulture = "en-US"
Page.Title = "..."
}
4.) 您的web.configs 文件。
<globalization uiCulture="en-US" culture="en-US" enableClientBasedCulture="false" />
注意enableClientBasedCulture 设置为false