0

ユーザーのブラウザに表示される URL を Happy/Balloons から happy-times/balloon-pops に変更しようとしています。プロジェクトにはアクション「Balloons」へのリンクが多数あるため、これらのリンクを変更するのではなく、同じアクションに対して別の URL が表示されるように global.asax を変更したいと考えています。元の MVC ルートは次のようになります。

routes.MapRoute(
            "Happy.Balloons",
            "Happy/Balloons/{groupId}/{paymentType}/{mortgageValue}/{province}",
            new { controller = "Happy", action = "Balloons" },
            new { groupId = "\\d+", paymentType = "\\d+", mortgageValue = "\\d+", province = "\\d+" }
        );

コードを次のように変更しました

routes.MapRoute(
            "Happy.Balloons",
            "happy-times/balloon-pops/{groupId}/{paymentType}/{mortgageValue}/{province}",
            new { controller = "Happy", action = "Balloons" },
            new { groupId = "\\d+", paymentType = "\\d+", mortgageValue = "\\d+", province = "\\d+" }
        );

この 2 番目のパラメーターは表示される URL だと思っていましたが、「お探しのリソースは削除されたか、名前が変更されたか、一時的に利用できません」というメッセージが表示されます。エラー。MapRoute のパラメーターを変更してこれを行う簡単な方法はありますか? もしそうなら、どのように?

質問のフォローアップ: mvc のアクションの URL を変更する

4

2 に答える 2

2

あなたはそれを間違っています。

ルート マッピングを変更しても、コントローラーの名前は変更されません。コントローラーとアクションの名前を変更し、ルートを{controller}/{action}デフォルトのようにマッピングします。次に、以前と同じように、デフォルトのコントローラーとアクションを設定できます。

次に、コントローラーの名前を に変更しhappy-times、アクションの名前を に変更する必要がありますballoon-pops

次のようになります。

{controller}/{action}/{groupId}/{paymentType}/{mortgageValue}/{province}

このトピックに関する優れたリソースを次に示します。

http://www.asp.net/mvc/tutorials/older-versions/controllers-and-routing/asp-net-mvc-routing-overview-cs

このSO投稿によってもたらされたようにhttps://stackoverflow.com/a/2375293/1178921

**これを行う方法をもっと見つけようとしているようです。

この投稿では、URL を異なる方法でルーティングするために使用できる属性について説明しています。 メソッド属性による ASP.NET MVC ルーティング

さらに、マッピングでURLを変更する方法は機能しますが、意図したものではありません。 その場合、ザック開発者はこれを完全に停止しました。オプションのパラメーターは、そのようにマークする必要がありますUrlParameter.Optional

于 2012-05-29T15:55:53.403 に答える
2

これは機能します(urlParameter.Optionalをデフォルト値に置き換えます)

routes.MapRoute( _
            "Happy.Balloons", _
            "happy-times/ballons-pops/{groupId}/{paymentType}/{mortgageValue}/{province}", _
            New With {.controller = "happy", .action = "Balloons", .groupId = UrlParameter.Optional, .paymentType = UrlParameter.Optional, .mortgageValue = UrlParameter.Optional, .province = UrlParameter.Optional} _
    )

しかし...それは悪い習慣です(本当に悪いものです)

ここでルートマップについて学ぶことができます

于 2012-05-29T16:01:23.457 に答える