1

URL をマップするルールを作成しようとしていますが、必要な結果が得られませんでした。これまでのところ、次のルールがあります。

routes.MapRoute(
            "Search", // Route name
            "{controller}/{action}/{product}/{page}", // URL with parameters
            new { controller = "Home", action = "Search", product = UrlParameter.Optional, page = UrlParameter.Optional } // Parameter defaults
        );

これを使用して、これまでのところこの結果を達成できます。

 localhost:8493/home/search/myproduct
 localhost:8493/home/search/myproduct/2

しかし、私はこのようなことをしたい:

 localhost:8493/myproduct

したがって、これはにルーティングされますhome/search/myproduct

私は次のことを試しましたが、うまくいきませんでした:

routes.MapRoute(
            "DirectSearch", // Route name
            "{product}/{page}", // URL with parameters
            new { controller = "Home", action = "Search", } // Parameter defaults
        );

これを行う方法はありますか?

追加:

したがって、ここで特定のルートを追加して別のアクションにマップしましたが、機能しません:

routes.MapRoute(
            "Tuna",
            "{controller}/{action}/{id}",
            new { controller = "Home", action = "Tuna", id = UrlParameter.Optional }
        );
4

1 に答える 1

1

あなたは近いと思います。これは機能するはずです。

routes.MapRoute(
            "Search", // Route name
            "{product}/{page}", // URL with parameters
            new { controller = "Home", action = "Search", product = UrlParameter.Optional, page = UrlParameter.Optional } // Parameter defaults
        );

フレームワークはルート データを上から下に読み取り、最初に一致したものを使用することを覚えておいてください。したがって、より具体的なルートがより一般的なルートの前にリストされていることを確認してください

編集

カスタム ルーティングに関するディスカッションへのリンクは次のとおりです。

于 2012-08-13T17:49:20.750 に答える