You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在.NET Core 2的Razor页面中获取当前区域性?

在.NET Core 2 Razor页面中获取当前区域性并配合Productise方法使用

针对你的场景,我给你整理几种在Razor页面中获取当前区域性的方案,以及如何把它集成到你的Productise扩展方法里:

1. 直接从HttpContext获取当前区域性

在Razor页面里,你可以直接通过Context对象访问当前请求的区域性信息,这是最直接的方式:

// 获取当前区域性(用于数字、日期等格式处理)
var currentCulture = Context.RequestCulture.Culture;
// 获取当前UI区域性(用于资源文件读取匹配)
var currentUICulture = Context.RequestCulture.UICulture;

2. 使用IViewLocalizer注入获取

如果你的项目已经基于.NET Core本地化框架开发,还可以通过注入IViewLocalizer来获取当前区域性,同时它也能帮你更便捷地读取资源文件:

@* 在Razor页面顶部注入IViewLocalizer *@
@inject IViewLocalizer Localizer

@{
    // 从Localizer实例中获取当前UI区域性
    var currentUICulture = Localizer.Culture;
}

3. 把区域性集成到Productise扩展方法

接下来要把当前区域性传递给你的Productise方法,建议你重载这个方法,新增一个CultureInfo参数,这样就能在方法内部根据区域性做对应的格式化或逻辑处理:

public static string Productise(this string resourceString, string placeholderValue, CultureInfo culture)
{
    // 示例:根据区域性格式化占位符内容(比如日期、数字的本地化格式)
    // 你可以根据实际业务需求替换成自己的处理逻辑
    var formattedPlaceholder = string.Format(culture, placeholderValue);
    return resourceString.Replace("{0}", formattedPlaceholder);
}

然后在Razor页面里调用时,传入当前获取到的区域性即可:

@{
    Layout = "~/Views/Shared/_LayoutNotAuthorised.cshtml";
    var currentCulture = Context.RequestCulture.Culture;
    ViewBag.Title = ApplicationName.Resources.Authentication_Login.Resources.PageTitle
        .Productise("http://localhost", currentCulture);
}

额外注意:确保本地化中间件已正确配置

别忘了在Startup.cs里配置好本地化中间件,这样RequestCulture才能正常读取到当前请求的区域性:

// 在ConfigureServices中配置本地化选项
public void ConfigureServices(IServiceCollection services)
{
    services.AddLocalization(options => options.ResourcesPath = "Resources");
    
    services.Configure<RequestLocalizationOptions>(options =>
    {
        var supportedCultures = new[]
        {
            new CultureInfo("en-US"),
            new CultureInfo("zh-CN"),
            // 添加你项目支持的其他区域性
        };
        
        options.DefaultRequestCulture = new RequestCulture("en-US");
        options.SupportedCultures = supportedCultures;
        options.SupportedUICultures = supportedCultures;
    });
    
    // 其他服务配置...
}

// 在Configure中启用请求本地化中间件(要放在UseMvc等核心中间件之前)
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    app.UseRequestLocalization();
    
    // 其他中间件配置...
    app.UseMvc();
}

内容的提问来源于stack exchange,提问作者user2761804

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 04:18:38