1

コントローラーまたはアクションにマップされていないルートのデフォルトの PageController にリクエストをルーティングするにはどうすればよいですか? しかし、コントローラーまたはアクションに一致するルートについては、ASP.NET MVC を使用して通常どおりに動作しますか?

基本的に私は開発したCMSバックエンドを持っており、ルートを調べて、データベースに保存されているページのルートと一致するかどうかを確認し、一致する場合はリクエストをデフォルトのPageControllerに転送する必要があります。データベースからページのコンテンツをロードします。独自のコントローラーとアクションが定義されている CORE ページもあります。データベース内のページ ルートと一致しないルートを入力した場合は、ASP.NET MVC の既定の動作に戻して確認する必要があります。 {コントローラー} / {アクション}用。

私はオンラインで検索して検索しましたが、これを行う方法を見つけることができませんでした。どんな助けでも大歓迎です。

4

1 に答える 1

2

既存のコントローラーとアクションのルートが最初になるようにルートを設定し、次に PageController にマップするキャッチオールを設定します。

    // More specific routes go here

    routes.MapRoute(
        null,                                              
        "{controller}/{action}/{id}",                           // URL with parameters
        new { action = "Index", id = UrlParameter.Optional },   // Don't put a default for controller here
        // You need to constrain this rule to all of your controllers, so replace "ControllerA" with an actual controller name, etc
        new { controller = "ControllerA|ControllerB|ControllerC" } 
    );

    routes.MapRoute(
        null,
        "{*path}",
        new { controller = "Page", action = "Index" }
    );

最初のルールとその前に配置したルールに一致しないものはすべてpath、インデックス アクション メソッドのパラメーターにパスを指定して、ページ コントローラーにフォールバックします。

于 2013-04-13T01:17:10.170 に答える