2016-05-21 16 views
2

私はASP.NETのWebサイトを持っています。別のプロジェクトの埋め込みビューを読み込むことに成功しましたが、実行するためのローカリゼーションを取得できません。これは、起動時のアセンブリからの眺めで正常に動作しますが、埋め込みものをロードするときにエラーメッセージがあります:ASP.NETコアにビューのローカライゼーションを埋め込む

と、InvalidOperationException:「Microsoft.AspNetCore.Mvc.Localization.IHtmlLocalizer」は登録されているタイプのサービスなしで。

ビューのコードは次の通りである:

_ViewImports.cshtml(埋め込み):

@using Microsoft.AspNetCore.Mvc.Localization 
@inject IHtmlLocalizer Localizer 
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers 

Index.cshtml(埋め込み)

@{ 
    ViewData["Title"] = Localizer["Home"]; 
} 

<div> 
    @Localizer["Test"] 
</div> 

マイstartup.cs (メインプロジェクト内)は次のようになります。

namespace My.Name.Space //Not the real one 
{ 
    public class Startup 
    { 
     public Startup(IHostingEnvironment env) 
     { 
      //Standard builder function 
     } 

     public IConfigurationRoot Configuration { get; set; } 

     public void ConfigureServices(IServiceCollection services) 
     { 
      services.AddLocalization(options => options.ResourcesPath = "Resources"); 

      //Add EF DbContext, identity, etc. 

      services.AddMvc() 
       .AddViewLocalization(LanguageViewLocationExpanderFormat.Suffix) 
       .AddDataAnnotationsLocalization(); 

      //Localization 

      var supportedCultures = GetListOfCultures(); 

      services.Configure<RequestLocalizationOptions>(options => 
      { 
       options.DefaultRequestCulture = new RequestCulture(culture: "en-US", uiCulture: "en-US"); 
       options.SupportedCultures = supportedCultures; 
       options.SupportedUICultures = supportedCultures; 
      }); 
     } 

     public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) 
     { 
      var locOptions = app.ApplicationServices.GetService<IOptions<RequestLocalizationOptions>>(); 
      app.UseRequestLocalization(locOptions.Value); 

      loggerFactory.AddConsole(Configuration.GetSection("Logging")); 
      loggerFactory.AddDebug(); 

      if (env.IsDevelopment()) 
      { 
       app.UseBrowserLink(); 
       app.UseDeveloperExceptionPage(); 
       app.UseDatabaseErrorPage(); 
      } 
      else 
      { 
       app.UseExceptionHandler("/Home/Error"); 

       // For more details on creating database during deployment see http://go.microsoft.com/fwlink/?LinkID=615859 
       try 
       { 
        using (var serviceScope = app.ApplicationServices.GetRequiredService<IServiceScopeFactory>() 
         .CreateScope()) 
        { 
         serviceScope.ServiceProvider.GetService<ApplicationDbContext>() 
          .Database.Migrate(); 
        } 
       } 
       catch { } 
      } 

      app.UseStaticFiles(); 

      app.UseIdentity(); 

      // To configure external authentication please see http://go.microsoft.com/fwlink/?LinkID=532715 

      app.UseMvc(routes => 
      { 
       // Areas support 
       routes.MapRoute(
        name: "areaRoute", 
        template: "{area:exists}/{controller=Home}/{action=Index}/{id?}"); 

       routes.MapRoute(
        name: "default", 
        template: "{controller=Home}/{action=Index}/{id?}"); 
      }); 
     } 
    } 
} 

何か不足していますか、それともRC2のバグですか?

グリーティング、

答えて

0

私のアプリケーションでRC1からRC2にアップグレードするのと全く同じ問題があります。

私はあなたがこれを機能させるためのWebプロジェクトのResourcesフォルダに自分の*の.resxファイルを持っている必要があります

services.AddLocalization(); 

services.AddLocalization(options => options.ResourcesPath = "Resources"); 

を変更しました。

0

私が代わりに

@inject IViewLocalizer Localizer 

おかげで、

@inject IHtmlLocalizer Localizer 

を入れ判明

関連する問題