在asp.net核心1.0.0中读取路径值

在asp.net核心1.0.0中读取路径值

问题描述:

我想实现一个很好的本地化方法,并且需要帮助来弄清楚如何读出路由参数。首先,我实现了本地化如下:在asp.net核心1.0.0中读取路径值

Startup.cs

// Configure supported cultures and localization options 
services.Configure<RequestLocalizationOptions>(options => 
{ 
    var supportedCultures = new[] { new CultureInfo("en-US"), new CultureInfo("de-DE") }; 
    options.DefaultRequestCulture = new RequestCulture("en-US", "en-US"); 

    options.SupportedCultures = supportedCultures; 
    options.SupportedUICultures = supportedCultures; 

    options.RequestCultureProviders.Insert(0, new CustomRequestCultureProvider(context => 
    { 
    var cultureInfo = options.DefaultRequestCulture.Culture; 

    string contextRequestUrlPath = context.Request.Path.ToString(); 
    foreach (var c in supportedCultures) 
     if (contextRequestUrlPath.Contains(c.ToString())) cultureInfo = c; 

    return Task.FromResult(new ProviderCultureResult(cultureInfo.ToString())); 
    })); 
}); 

对于每一个通过string.Contains()要求我CustomRequestCultureProvider检查文化信息在里面,并更新ProviderCultureResult

与IAM路由这样的:

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

有没有办法从当前路径读出的文化模板元素?我需要在我的项目中检查几点。另外在一个视图中,我想有可能读出路由值而不是检查context.Request.Path字符串。

任何地方尝试在控制器:

var requestCultureFeature = HttpContext.Features.Get<IRequestCultureFeature>(); 
var culture = requestCultureFeature.RequestCulture.Culture;