2

これが私の現在のルーティングです

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

domain.com/test にアクセスするたびに

これにより、MarketingSite というコントローラーでテスト アクションが呼び出されます。

私が達成したいのは、domain.com/load-from-db にアクセスしたときに、load-from-db というアクションがないため、リクエストを特定のアクションと load-from-db に送信したいということです。そのアクションのパラメーターになります。そのアクションでは、パラメーターに基づいてデータベースから何かを読み取り、ビューを返します。存在するアクションを指定すると、そのアクションが呼び出されます。

何か助けはありますか?

4

2 に答える 2

1

最初の注意 - ルーティング エンジンは、リストされた順序でルートを適用し、それぞれをチェックし、一致しない場合は続行します。現在、キャッチオールとして「デフォルト」ルートが設定されています。コントローラーが見つからない場合は「MarketingSite」を使用し、アクションがない場合は「index」を使用します。私があなたの問題を理解している場合、「インデックス」アクションはまったく必要ありません。別のアクションを呼び出して、クエリをそれに渡します。

あなたは試すことができます:

//Look for a matching action        
routes.MapRoute(
                    "MatchAction", // Route name
                    "{action}/{id}",
                     new { controller = "MarketingSite", id = UrlParameter.Optional}                                    
                );

//With a single segment, pass that to a specific action as a parameter.
routes.MapRoute(
                    "load-from-db",  // Route name
                    "{load-from-db}", // URL with parameters
                    new { controller = "MarketingSite", action = "MyAction"}
                );

//With no segments (ex. domain.com/) use the Index on MarketingSite as default.
routes.MapRoute(
                    "Default", // Route name
                    "", // URL with parameters
                    new { controller = "MarketingSite", action = "Index"}
                );

ただし、これらのルートは、探しているものを正確に達成しない可能性があります。ルートを MVC にマップするのは少し難しい場合があります。これをチェックして、それに応じてルートを設計する必要があります。

お役に立てば幸いです、クリス

于 2012-09-14T17:59:04.203 に答える
0

コントローラーでHandleUnknownActionメソッドをオーバーライドします。MarketingSite

protected override void HandleUnknownAction(string actionName) {
   // TODO: check for actionName in database
}
于 2012-09-14T23:45:40.253 に答える