2012-03-19 8 views
0

これはどのようにasp.net mvcで達成可能ですか?私は...しかし、彼らは通常、例えば一度Githubのようなルート

ネストされている、無限の可能...そこ

Github like routes in Rails

すなわち、ネストされたフォルダをいくつかのルビーの例を見てきました

私のアプリでは私の主なルートを言うことができますが、次のとおりです。

/プロジェクト/ {PROJECTID}/

私は、ファイルシステムにフックしていますので、私は私ができるので、ユーザーがどのようなディレクトリ構造をナビゲートしたいです持っている:など

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

...

私は唯一のユーザがあるURL /ディレクトリ内にあるファイルや画像を表示することができますこの方法...

+1

あなたは実際に何を求めていますか?もっと詳しくお願いします - リンクでは十分ではありません。 –

+0

@MattGibson:*ネストされた*フォルダを言ったとき、私はそれが非常にはっきりしていると思ったが、それは残念ではなかった。 – Haroon

+0

あなたの編集内容に基づいて私の答えを更新しました。私はもともとあなたの質問を誤解して別のものを意味していました。 –

答えて

2

ルーティング用に{*queryvalues}segmented url handlerがあなたの後になっていると思います。 *は、「/」で区切られた1つ以上のセグメントのワイルドカード形式の一致を示します。

物理パスにマッピングするには、あなたが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 
      ); 

その後RouteData.Values["projectId"]RouteData.Values["path"]を取得し、あなたも一緒に必要なものは何でもやる、とIndexアクションでProjectControllerを作成...

+0

問題は - 私のファイルパスはクラウドにあり、ローカルディレクトリではありません...私はそのmaprouteが最も適していると仮定していますか? – Haroon

+0

@Haroonは、MapRouteの例で私の答えを更新しました.Matroot(RouteHandler(MVC Controller/Actionなど))やMapPageRoute(Webformsまたは直接リソースマッピング) –

+0

ありがとう、私はこの明日を調べるつもりです、それは私への唯一のアプローチのように見えます、私は明日それを見て後にこれを受け入れる場合、私はあなたとokを願って – Haroon