2009-07-06 9 views
2

ASP.MVCではなく、私は次のルーティング問題の解決策を探しています。メンバーと>ページ
/メンバー/ 123詳細 - -URLのオプションのアクション値に応じたルーティング

/メンバー/ 123/A +ストレンジ+ユーザー名>
上記のように:

私はこれらのURLの示すページにつながりたいです /メンバー/接続/ 123 - >
/メンバー/ギャルソン上記のように - メンバーの接続
/メンバー/接続/ 123/A +ストレンジ+ユーザー名のリストと>のページNTS/123
- メンバーのリストを持つ>ページが
/メンバー/コメント/ 123/A +ストレンジ+ユーザー名コメント - >

上記のように、ユーザ名は無視されなければならないが、助けるためにリンクに追加されますサーチエンジン。

私は、次のルートを試してみました:

routes.MapRoute("MemberPage", "Member/{id}/{*name}", new { controller = "Member", action = "Details", id = "" }); 
routes.MapRoute("MemberAction", "Member/{action}/{id}/{*name}", new { controller = "Member", action = "Details", id = "" }); 

しかし、それは最初のルートにデフォルトで常にそれを思わし、「接続」や「コメント」詳細コントローラのIDの無効であるため、エラーを取得します。

id-valueのタイプやこれを解決する別の方法に応じてルートを切り替える方法はありますか?

答えて

5

{id}両方のルートにルート制約を追加すると役立ちます。

routes.MapRoute("MemberPage", "Member/{id}/{*name}", 
     new { controller = "Member", action = "Details", id = "" }, 
     new { [email protected]"\d+" }); 
routes.MapRoute("MemberAction", "Member/{action}/{id}/{*name}", 
     new { controller = "Member", action = "Details", id = "" }, 
     new { [email protected]"\d+" }); 

この方法では、それは最初のルートに{ID}への「コメント」をマップしようとはしませんし、そのURLで正常に動作する必要があります秒1に通じ分類されます。

+0

チャームのように動作します!ありがとう! – hbruce

+0

ありがとうございます –

関連する問題