在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;