2009-07-11 20 views
1

http://mysite.com/Fooを処理するようにルーティングを設定するにはどうすればよいですか?ASP.NET MVCで空のURLを処理する方法

ここで、fooには任意の値を設定できます。私はそれが/ Home/Action/Idに行きたいのですが、fooはidです。

これらは私が試してみましたマッピングです:

 routes.MapRoute("Catchall", "{*catchall}", 
      new { controller = "Home", action = "Index", id=""}); 

     routes.MapRoute("ByKey", "{id}", 
      new { controller = "Home", action = "Index" id=""}); 

どちらも任意のヘルプ404

感謝を生成しました。

答えて

1

2番目のルートは正しいです。それは動作するはずです。上記の別のルートがあるかもしれませんか?私は、しかし、それならば、それはもう少し説明以降の衝突を防ぐためになるだろう

routes.MapRoute("ByKey", "{id}", 
    new { controller = "Home", action = "Index", id=""}); 

Phil Haack's ASP.NET Routing Debugger

+0

私は単体テストが優れていると信じています。 MvcContribルーティングテストヘルパーを試しましたか? :) –

+0

''〜/ foo ".Route()のようなものがあります。ShouldMapTo (x => x.Index(" foo "));'は面白いでしょう。あなたも答えを投稿する必要があります –

+0

しかし、私はこのテストが失敗した場合、デイビッドがどのように役立つか分かりませんか? –

3

であなたのルートをデバッグすることは、これを(あなたがあなたのオリジナルのポストで不足しているカンマを持っていた注意してください)試してみてください

routes.MapRoute("ByKey", "ByKey/{id}", 
    new { controller = "Home", action = "Index", id=""}); 

これを最初のMapRouteコマンドとして配置します。注文には問題はありません。追加する最初のルートは、テストするURLの最初のルートです。

関連する問題