2016-12-07 45 views
3

在我Startup.cs我添加了兩個文化:ASP.NET MVC核心如何讓應用程序支持文化列表

 var cultureLt = new CultureInfo("LT"); 
     var cultureEn = new CultureInfo("EN"); 
     var supportedCultures = new List<CultureInfo> {cultureEn, cultureLt}; 

     var requestLocalizationOptions = new RequestLocalizationOptions(); 
     requestLocalizationOptions.RequestCultureProviders.Insert(0, new CustomRequestCultureProvider()); 
     requestLocalizationOptions.SupportedCultures = supportedCultures; 
     requestLocalizationOptions.SupportedUICultures = supportedCultures; 

     app.UseRequestLocalization(requestLocalizationOptions); 

我需要得到這個列表構造和現在consturctor控制器I初始化的變量

private readonly IOptions<RequestLocalizationOptions> _locOptions; 

,並在行動中,我試圖讓這個名單是這樣的:

var cultureItems = _locOptions.Value.SupportedUICultures 
      .Select(c => new SelectListItem { Value = c.Name, Text = c.DisplayName }) 
      .ToList(); 

但問題是,此行只返回當前在應用程序中設置的文化......如何獲得EN和LT文化?

回答

3

您必須配置RequestLocalizationOptions。

public void ConfigureServices(IServiceCollection services) 
{   
    // ... enter code here 

    // RequestLocalizationOptions must to be configured 
    var cultureLt = new CultureInfo("LT"); 
    var cultureEn = new CultureInfo("EN"); 
    var supportedCultures = new[] { cultureEn, cultureLt }; 

    services.Configure<RequestLocalizationOptions>(options => 
    { 
     options.SupportedCultures = supportedCultures; 
     options.SupportedUICultures = supportedCultures; 
    }); 

    // Add them to IServiceCollection 
    services.AddLocalization(); 

    // ... enter code here 
} 

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) 
{ 
    // ... enter code here 

    // add RequestLocalizationMiddleware to pipeline 
    app.UseRequestLocalization(); 

    app.UseMvc... 
} 
相關問題