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
});
}
}