如果页面url存储在数据库中,则为MVC路由

时间:2011-06-22 14:21:36

标签: asp.net-mvc asp.net-mvc-routing

我有一种CMS应用程序,允许创建内容页面并为它们指定URL。 我想让用户输入任何网址,例如:

/Documents/Forms/MyForm
/Documents/Manuals/MyManual
/Events/BBQThisWeek

然后我需要创建一个路由来检查数据库中是否存在具有给定Url的内容页面,如果是,则将路由到处理内容页面的控制器。如果没有,它将继续默认路线。

我该如何处理? 谢谢 诉

2 个答案:

答案 0 :(得分:0)

您可能需要设置自定义处理程序。看看here

上的选项三

您可以从动作调用者的数据库中读取。

答案 1 :(得分:0)

创建一个扩展Route

的类
public class CustomRoute : Route
{

    public override RouteData GetRouteData(System.Web.HttpContextBase httpContext)
    {
        var routeData = base.GetRouteData(httpContext);
        if(routeData != null)
        { do some stuff on routeData... }
        return routeData;
    }

    public override VirtualPathData GetVirtualPath(RequestContext requestContext, RouteValueDictionary values)
    {
        // Do the opposite of the first function
    }
}

编辑: 最简单的方法是扩展Route并使用base.GetRouteData然后只需将数据标记“控制器”和“操作”更改为您想要的内容