Github喜欢路线

时间:2012-03-19 12:57:19

标签: url asp.net-mvc-2 routes

如何在asp.net mvc中实现这一目标?我在那里看到了一些红宝石的例子......

Github like routes in Rails

即。嵌套文件夹,可以无限制......但是它们通常嵌套一次

e.g。

让我说我的应用程序中的主要路线是:

/项目/ {专案编号} /

我迷上了文件系统,所以我希望用户可以浏览任何目录结构,以便我可以:

/projects/{projectid}/foldera/
/projects/{projectid}/folderb/
/projects/{projectid}/foldera/pic1.png
/projects/{projectid}/folderb/special/car134d.jpeg

等...

这样我只能显示用户所在的url /目录中的文件或图片......

1 个答案:

答案 0 :(得分:2)

我认为你所追求的是路由的{*queryvalues} segmented url handler。 *表示一个或多个段的通配符样式匹配,由“/".

分隔

要映射到物理路径,您可以使用它来添加到Global.asax.cs的路由:

routes.MapPageRoute(
            "Projects", // Route name
            "projects/{projectId}/{*path}", // Route url format
            "~/ProjectFolder/{projectId}/{path}" // Path to files
            );

如果你想获得MVC控制器动作的路径,然后用它做一些事情,你可以使用MapRoute:

routes.MapRoute(
            "Projects", // Route name
            "projects/{projectId}/{*path}", // Route url format
            new { controller = "Project", action = "Index" } // Defaults
            );

然后创建一个ProjectController,并在Index操作中检索RouteData.Values["projectId"]RouteData.Values["path"]并随身所欲地执行任何操作......