2016-09-02 5 views
1

基本的に私はルートを作成するために必要なコミュニティ名の大きなリストを持っています。.NETコアのルート用のモデルまたはデータベースのデータをStartup.csにインポートする

routes.MapRoute(
     "CommunityAirdrieMeadows", 
     "airdrie-communities-airdrie-meadows", 
     new { controller = "Search", action = "Index", community = "Airdrie Meadows" } 
; 

私はリストをforeachすることができますし、そのように作成したいと思います。 Startup.csに.NETコアのルート構成が含まれている問題を実行しています。私は、私が使用できるアイテムのリストを持ってくる良い方法があるのか​​、それとも間違った方法をしているのか不思議です。

+0

あなたは 'Configure'方法でデータベースからデータをロードする場合は、サービスのコレクションから' DbContext'を得ることができる必要があります。 –

答えて

1

IServiceProviderにはIApplicationBuilder.ApplicationServicesでアクセスできます。

例えば:

public void Configure(IApplicationBuilder builder) 
    { 
     [...] 
     builder.UseMvc(routes => MapRoutesFromDb(builder.ApplicationServices, routes)); 
    } 

    private void MapRoutesFromDb(IServiceProvider services, IRouteBuilder routes) 
    { 
     var communityRepository = services.GetRequiredService<ICommunityRepository>(); 
     var communities = communityRepository.GetAll(); 
     // Get these from the database. 
     var communities = new [] 
     { 
      new 
      { 
       Name="Airdrie Meadows", 
       Template="airdrie-communities-airdrie-meadows" 
      } 
     }; 
     foreach (var community in communities) 
     { 
      routes.MapRoute($"Community {community.Name}", community.Template, new 
      { 
       controller = "Search", 
       action = "Index", 
       community = community.Name 
      }); 
     } 
    } 
関連する問題