Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 将模型或数据库数据带到.NET Core中路由的Startup.cs中_Asp.net Mvc_Asp.net Core - Fatal编程技术网

Asp.net mvc 将模型或数据库数据带到.NET Core中路由的Startup.cs中

Asp.net mvc 将模型或数据库数据带到.NET Core中路由的Startup.cs中,asp.net-mvc,asp.net-core,Asp.net Mvc,Asp.net Core,基本上,我有一个很大的社区名称列表,我需要为其创建路由。不是为每个管线创建新管线,而是: routes.MapRoute( "CommunityAirdrieMeadows", "airdrie-communities-airdrie-meadows", new { controller = "Search", action = "Index", community = "Airdrie Meadows" } ; 我希望能够浏览一个列表,并以这种方式创

基本上,我有一个很大的社区名称列表,我需要为其创建路由。不是为每个管线创建新管线,而是:

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

我希望能够浏览一个列表,并以这种方式创建它们。我遇到了Startup.cs在.NET Core中包含路由配置的问题。我只是想知道是否有一个好的方法来提供我可以使用的项目列表,或者我是不是走错了方向。

你可以通过
iaapplicationbuilder.ApplicationServices
访问
IServiceProvider

例如:

public void配置(IApplicationBuilder)
{
[...]
UseMvc(routes=>maprotesfromdb(builder.ApplicationServices,routes));
}
私有void MapRoutesFromDb(IServiceProvider服务、IRouteBuilder路由)
{
var communityRepository=services.GetRequiredService();
var communities=communityRepository.GetAll();
//从数据库中获取这些。
var社区=新[]
{
新的
{
Name=“Airdrie Meadows”,
Template=“airdrie社区airdrie草地”
}
};
foreach(社区中的var社区)
{
routes.MapRoute($“Community{Community.Name}”,Community.Template,新建
{
controller=“搜索”,
action=“Index”,
community=community.Name
});
}
}

如果要在
Configure
方法中从数据库加载数据,您应该能够从服务集合中获取
DbContext
    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
            });
        }
    }