0

古い .aspx ページを新しい MVC ページに変換するプロジェクトに取り組んでいます。現在、ルーティング機能を使用して、既存のレガシー ページをマップし、新しい MVC ページを舞台裏で使用しています。これは既存の URL を保持しているためうまく機能していますが、コントローラーがユーザーをリダイレクトする必要がある場合、または MVC Url.Action リンクが使用されている場合は常に、コントローラーがユーザーに送信する URL は MVC URL であり、ルーティングされたレガシー ページの URL ではありません。 . これが箱から出してすぐに機能すると思われる方法であることは理解していますが、MVCに何らかの「逆ルーティング」機能があるかどうか疑問に思っていました。逆ルーティングにより、Url.Action("action") が、デフォルトの /controller/action リンクではなく、指定されたアクションでルーティングされた .aspx に関連付けられた URL を返すことを可能にするものを探しています。

たとえば、

ここにサンプルルートがあります

context.MapRoute("AboutUs", "pages/aboutus.aspx", new { controller = "default", action = "aboutus" });

これにより、domain.com/pages/aboutus.aspx は新しい MVC アクション「aboutus」を DefaultController から裏で完全に実行できるようになります。

ただし、別のMVCページにリンクが作成されている場合

Url.Action("aboutus")

domain.com/mvc/aboutus を参照します。サイト全体の統一性を保つために、domain.com/pages/aboutus.aspx を参照してもらいたいと思います。

提供できる洞察に感謝します。Url.Action メソッドをオーバーライドしてルートを検索し、マップされた URL を返す必要があるかもしれませんが、既存の機能を確認したかっただけなので、車輪の再発明はしません。

4

1 に答える 1

1

次のように、ルートパラメータではなくルート名でルートを照合するRouteUrl拡張メソッドを使用してみてください。

Url.RouteUrl("aboutus") // route name

MSDN: http: //msdn.microsoft.com/en-us/library/dd460347

于 2012-06-20T18:16:10.617 に答える