1

コントローラーのないアクションを特定のアクションにマップしようとしていますが、コントローラーを URL に表示したくありません。以下に示すマッピングを使用して、これを部分的に達成しました。

        routes.MapRoute(
            null,
            "Contact",
            new { controller = "Home", action = "Contact" });

これにより、ホームコントローラーページで行われたリクエストが

http://localhost:8082/Contactただし、「NotHome」など、別のコントローラーで処理される別のページで同じリクエストが行われると、検索されたルートが NotHome/Contact であるため、ページが見つからないというエラーが発生します。

与えられた助けやアドバイスを前もって感謝します..

4

3 に答える 3

1

解決策は単純なものであることがわかりました。

routes.MapRoute( "ContactsTOHome", "連絡先", new { controller = "ホーム", action = "連絡先" });

ルート マッピングは問題なく、名前以外の変更は必要ありませんでした。上記のルートは URL のコントローラーを非表示にしますが、私の問題はアクションの呼び出しにあります。

"<%= Url.Action("Contact") %>">お問い合わせ

上記のコードには、コントローラーとアクションが含まれている必要があります。

<%= Url.Action("Contact","Home") %>">お問い合わせ

与えられたすべての助けとアドバイスに感謝します.

ダンが行ったコメントに関して、フォローアップの質問があります。

HttpContext コンテキスト = HttpContext.Current; context.RewritePath("~/Contact");

HttpContext に Current が含まれていないため、上記のコードはコンパイルされませんでしたが、次のことは可能でした: HttpContext.RewritePath("~/Contact");

私の質問は、なぜ最新のものがないのか、なぜ私が入れたコード行がURLを書き換えなかったのですか??

于 2009-09-25T11:13:44.780 に答える
1

このルートを追加してみてください:

routes.MapRoute(
    "ContactsToHome",
    "{controller}/Contact",
    new { controller = "Home", action = "Contact" });

これにより、コントローラーのContactアクションがHomeコントローラーにリダイレクトされます。

于 2009-09-25T09:18:18.007 に答える
1
routes.MapRoute(
                "Contact", 
                "{resource}/Contact",
                new {controller = "Home", action = "Contact"}
               );

これがあなたのやりたいことかどうかは定かではありませんが、これは (デフォルト ルートの上に追加された場合!)、コントローラーに関係なく Contact アクションのすべての要求を、コントローラー/アクションの Home/Contact の組み合わせにルーティングする必要があります。

/Contact を URL として取得するには

ホーム / 連絡先に追加

HttpContext context = HttpContext.Current;
context.RewritePath("~/Contact"); 

親切、

ダン

于 2009-09-25T09:18:31.657 に答える