正如标题所示,我希望在ASP.NET Core应用中设置日期格式,以便为访问者所在地区设置日期格式。
例如,在我的视图模型中,当前定义我的日期;
[DisplayFormat(DataFormatString = "{0:MMM dd, yyyy}")]
public DateTime OpenDate { get; set; }
如何配置我的应用程序以使用访问者本地首选项?
我试图通过在useMvc()之前放置以下内容来在启动文件中启用本地化:
app.UseRequestLocalization();
然后在我的控制器中尝试了以下操作,但是除非我编辑启动文件并配置默认区域性,否则browserCulture的值始终为EMPTY。
var locale = Request.HttpContext.Features.Get<IRequestCultureFeature>();
var browserCulture = locale.RequestCulture.UICulture.ToString();
我正在定义默认的区域性;
services.Configure<RequestLocalizationOptions>(options =>
{
options.DefaultRequestCulture = new RequestCulture("en-GB");
});
我已经使用Chrome浏览器检查我的浏览器是否通过了Accept-Language标头,并且可以确认。使用Chrome插件,我还更改了Accept-Language属性,使其与应用程序(即en-US)中的默认区域性设置不同,但这也没有实现。
我想念什么?
-----解决方案-----
根据建议,我需要配置应用程序要支持的区域性。我将启动文件中的ConfigureServices中的本地化配置更改为以下内容;
// Setup supported cultures
var supportedCultures = new[]
{
new CultureInfo("en-US"),
new CultureInfo("fr"),
new CultureInfo("en-GB"),
new CultureInfo("zh-TW")
};
services.Configure<RequestLocalizationOptions>(options =>
{
options.DefaultRequestCulture = new RequestCulture("en-GB");
options.SupportedCultures = supportedCultures;
options.SupportedUICultures = supportedCultures;
});
答案 0 :(得分:1)
您似乎没有为RequestLocalizationOptions
添加支持文化:
var supportedCultures = new[]
{
new CultureInfo("en-US"),
new CultureInfo("fr"),
new CultureInfo("en-GB"),
new CultureInfo("zh-TW"),
// ...
};
app.UseRequestLocalization(new RequestLocalizationOptions
{
DefaultRequestCulture = new RequestCulture("en-GB"),
SupportedCultures = supportedCultures,
SupportedUICultures = supportedCultures
});