2009-04-15 17 views
0

私のWebアプリケーションで。一般的な品質:あなたは、私が文書の2種類を持って見ることができるようにC#asp.net mvc 1.0 routing

/document/quality/index 
/document/general/index 

/document/quality/detail/[id] 
/document/general/detail/[id] 

:私はセットアップには、このようなルートが欲しいです。 global.asaxファイルでこれを設定する最良の方法は何ですか?私は、次のことを試してみましたが、私はそれが動作し得ることはありません:

routes.MapRoute(
    "QualityDocument", 
    "Document/Quality/{action}/{id}", 
    new { controller = "Document", action="Index", id= ""} 
    ); 

routes.MapRoute(
    "GeneralDocument", 
    "Document/General/{action}/{id}", 
    new { controller = "Document", action = "Index", id = "" } 
    ); 

routes.MapRoute(
    "Default",            // Route name 
    "{controller}/{action}/{id}",       // URL with parameters 
    new { controller = "Home", action = "Index", id = "" } // Parameter defaults 
); 

EDIT

私asaxファイルで、それはdoesnの「」=私は今取り組んでいるが、私はアクションを変更する場合「Tはもう働か:

のGlobal.asaxを:

routes.MapRoute(
    "GeneralDocument", 
    "Document/General/{action}/{id}", 
    new { controller = "Document", action = "blaat", id = "" } 
    ); 

DocumentController:

public void blaat(int? id) 
{ 
    Response.Write("algemeen"); 
    // return View(); 
} 

リソースが見つかりませんでした。しかし、私はblaatの代わりにインデックスを使用しています。どうして?

routes.MapRoute(
    "QualityDocument", 
    "Document/Quality/index", 
    new { controller = "Document", action="Index" } 
); 

routes.MapRoute(
    "Default",            // Route name 
    "Document/Quality/details/{id}",        // URL with parameters 
    new { controller = "Document", action = "Details", id = "" } // Parameter defaults 
); 

答えて

1

あなただけの「ドキュメント」のルートを接頭辞と、その後のようにデフォルト値を設定することができるはずです。

routes.MapRoute("DocumentView", 
       "Document/{controller}/{action}/{id}", 
       new { controller = "General", action="Index", id = "" } 
      ); 

あなたが完全に定義することにしたいルーティングと覚えています!ルートを設定するとき。これらの予期しないルートを通過させないでください:D

MIX でScott Hanselmanのプレゼンテーションをチェックしてください。

http://www.hanselman.com/blog/Mix09FirstHalfRollupAndSessionVideos.aspx

0

はこれを試してみてください。

routes.MapRoute(
    "QualityDocument", 
    "{controller}/Quality/{action}/{id}", 
    new { controller = "Document", action="Index", id= ""}, 
    new { controller = "Document" } 
); 
routes.MapRoute(
    "GeneralDocument", 
    "{controller}/General/{action}/{id}", 
    new { controller = "Document", action = "Index", id = "" }, 
    new { controller = "Document" } ); 
1

おそらくコントローラの属性に追加しますが、ドキュメントコントローラであることを、それを制約:

+0

コントローラ属性に追加するとどういう意味ですか?これはどのように作動しますか? – Martijn

+0

私はあなたのパターンにput {controller}を意味します。私はそれがあなたのパターンで表示されていないので、コントローラの値を引き出すことができなかったのだろうかと思っていた。 – tvanfosson

+0

これについて少し考えた後で、2つを区別する方法を知るために、ドキュメントタイプのプロパティを取り出す必要はありませんか?これには、適切に行うためのカスタムルートハンドラが必要な場合があります。 – tvanfosson