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

发布于 2024-11-16 19:12:53 字数 263 浏览 2 评论 0原文

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

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

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

我该如何处理这个问题? 谢谢 五、

I have kind of CMS application that allows to create content pages and specify urls for them.
I'd like to let users enter any url, like:

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

Then I need to create a route that will check if a content page with the given Url exists in the DB and if yes, will route to controller that handles content pages. If not it'll continue with default route.

How do I approach this?
Thanks
V.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

月牙弯弯 2024-11-23 19:12:53

您可能必须设置一个自定义处理程序。在此处查看选项三,

您可以在操作调用程序上从数据库读取。

You will probable have to set-up a custom handler. Take a look at option three on here

You could read from database on action invoker.

じее 2024-11-23 19:12:53

创建一个扩展 Route edit 的类

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,然后只需将数据标记“controller”和“action”更改为您想要的

Create a class that extends 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
    }
}

edit:
The easiest way is to extends Route and use base.GetRouteData then just change the data tokens 'controller' and 'action' to what you want

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文