2012-03-19 53 views
0

這是如何在asp.net mvc中實現的?我見過一些例子紅寶石那裏......Github like routes

Github like routes in Rails

即嵌套的文件夾,可以無限......但是他們通常嵌套一次

例如

可以說,我在我的應用程序的主要途徑是:

/項目/ {專案編號}/

我勾搭成一個文件系統,所以我希望用戶通過任何目錄結構,這樣我就可以瀏覽有:

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

等等

這樣我只能說明是URL /目錄中的用戶在內部文件或圖片...

+1

你究竟在問什麼?更多細節請 - 鏈接是不夠的。 – 2012-03-19 13:14:34

+0

@MattGibson:當我說*嵌套*文件夾時,我認爲這很清楚,但事實並非如此,對此深表歉意。 – Haroon 2012-03-19 13:23:28

+0

根據您的修改更新了我的答案,因爲我最初將您的問題誤解爲其他意思! – 2012-03-19 13:51:31

回答

2

我認爲你所追求的是用於路由的{*queryvalues}segmented url handler。 *表示通過「/」分隔的一個或多個段的通配符樣式匹配。如果你想獲得的路徑爲MVC控制器動作,然後做一些

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

映射到物理路徑,你可以用它來路由添加到您的Global.asax.cs有了它,你可以使用圖路線:

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"],做任何你需要與他們...

+0

問題是 - 我的文件路徑在雲中,而不是本地目錄...我是否假設maproute會最適合? – Haroon 2012-03-19 14:01:19

+0

@哈龍,已經用MapRoute的例子更新了我的答案 - 當你希望傳入的請求被RouteHandler(例如MVC控制器/動作)拾取時使用MapRoute,並且MapPageRoute用於物理位置(Webforms或者直接資源映射) – 2012-03-19 15:57:22

+0

謝謝......明天我會考慮這個,看起來像是我唯一的方法,我希望如果我在明天看到它之後接受它,那麼它就可以與您聯繫 – Haroon 2012-03-19 15:58:50