我有一个在Azure中运行的MVC5应用程序,并希望日期以英国格式显示,例如:
15/12/16
但它们总是以这种格式出现:
16年12月15日
我已将system.web
中的Web.config
中的文化设置为
<globalization culture="en-GB" uiCulture="en-GB" />
我知道这归结于我不了解ASP.NET中的全球化/文化,但我发现官方文档真的很差。
我花了几个小时绕圈试图弄清楚如何做到这一点,有人能告诉我我做错了吗?
答案 0 :(得分:2)
您可以在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