我打算编写一个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字典(这可能是最复杂的)。

您可以在此处找到几个示例:
  • asp.net mvc: store routes in thedatabase
  • Editable MVC Routes Apache Style
  • 08-26 18:24