我打算编写一个MVC博客引擎,以支持多个博客。创建博客时,用户将能够选择将访问其博客的路径。
例如:
/ blogs / 首先博客 /
/ newprojects / secondBlog /
/ foo / bar / thirdblog /
该路线信息将存储在数据库中。我不希望MVC仅使用Global.asax.cs中静态声明的路由,而是希望它首先从数据库中读取路由。然后,如果找不到任何内容,则回退到Global.asax.cs中声明的路由。这可能吗?如果是,您会建议如何实现?
谢谢
最佳答案
我将以默认方式声明默认路由,然后读取数据库并调用相同的方法,但不要传入硬编码的字符串,而是从数据库传入值:
foreach(RouteDetails routeDetails in routesFromDatabase)
{
routes.MapRoute(
routeDetails.Name,
routeDetails.Route,
routeDetails.Defaults);
}
您需要正确地映射表,并填充想象中的对象“RouteDetails”中的字段,包括
Defaults
字典(这可能是最复杂的)。您可以在此处找到几个示例: