1

aspx サイトを MVC3 として書き直すプロジェクトに取り組んでいます。古い URL を新しいサイトで機能させたい。URL が実際にクエリ文字列に正しくルーティングするのに十分な情報を含むように、コントローラーとアクションに名前を付けましたが、? が好きではないため、ルーティングが機能しません。URLで。

基本的に、次のような古い URL があります。

www.example.com/Something/SomethingElse/MyPage.aspx?Section=DetailSection&TaskId=abcdef

以下を使用してルートを作成しようとしました。

routes.MapRoute(
    "OldSite",
    "Something/SomethingElse/MyPage.aspx?Section={action}Section&Id={id}", 
    new { controller = "Task", action = "Index", id = UrlParameter.Optional }
);

次の正しい新しい URL にルーティングする必要があります。

www.example.com/Task/Detail/abcdef

MyPage.aspx ページへのすべてのトラフィックは、新しいタスク コントローラーに送られるべきであり、Section パラメーターの先頭は常に、そのコントローラーのいくつかの対応するアクションの 1 つと一致することがわかっています。

残念ながら、ルートに疑問符を含めることはできないというエラーが表示されることがわかりました。これをどのように処理すればよいですか?URL 書き換えを使用した方が良いでしょうか? これは非公開のサイトであるため、永続的なリダイレクトなどを返すことには関心がありません。とにかく、サイトへのリンクを持つ検索エンジンはありません。古いメールに URL が記載されている顧客が、新しいサイトの正しいページにアクセスできるようにしたいだけです。

4

1 に答える 1

2

この 1 つのケースでは、古いページをルートにマップするのが最も簡単な方法だと思います。

routes.MapRoute(
    "MyPage",
    "Something/SomethingElse/MyPage.aspx", 
    new { controller = "Task", action = "MyPageHandler" }
);

そして、このルートを TaskController のアクション メソッドにマップします。

public ActionResult MyPageHandler(string section, string taskId)
{
    if (section.Contains("Detail"))
    {
        // execute section
    }
}

このようにして、古いサイトのクエリ文字列を、クエリ文字列として扱います。これらのパラメーターをアクション メソッドに直接渡すことは、古いサイトを解釈する最も MVC らしい方法です。

于 2012-06-28T05:58:46.227 に答える