0

呼び出されたアクションまたはコントローラーを変更せずに、mvc で特定のアクションの URL を変更する方法はありますか?

もしそうなら、これは次のMapRouteでどのように行われますか:

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

希望する URL は「.../estate-support/deal-closing/...」です。現在、「.../Estate/CloseDeal/...」と表示されています。

このアクションにリンクするボタンは次のようになります。

 <button detail="@Url.Action("CloseDeal", new { groupId = info.GroupId })" class="orange">

編集1:

に変更しようとしました:

routes.MapRoute(
        "Estate.CloseDeal",
        "estate-support/deal-closing/{groupId}/{paymentType}/{mortgageValue}/{province}",
        new { controller = "Estate", action = "CloseDeal" },
        new { groupId = "\\d+", paymentType = "\\d+", mortgageValue = "\\d+", province = "\\d+" }
    );

これによりエラーが返されました: お探しのリソースは削除されているか、名前が変更されているか、一時的に利用できません。

編集2:

2 番目の文字列を変更すると、すべてのルートで機能しましたが、これは違います。違いは、このルートには追加のパラメーター (groupID、paymentType など) があることです。

4

3 に答える 3

3

"Estate/CloseDeal"2 番目の文字列を- に置き換えるだけで"estate-support/deal-closing"問題なく動作するはずです。

この特定のケースでは、ルートがコントローラーとアクション名を介してパラメーター化されていないため、これは簡単です。つまり、ルートには含ま"{controller}/{action}"れていません。

于 2012-05-29T16:44:00.010 に答える
0

呼び出しのパラメーターを更新するかUrl.Action、Url.Action 呼び出しのパラメーターと一致するようにレンダリングするルーティングを作成する必要があります (つまり、名前を使用する Url>Action オーバーライドを使用する場合、名前は一致する必要があります)。

人々が古い URL をお気に入りに追加できると予想される場合は、単純に新しい URL にリダイレクトするルートを追加して、古い URL を新しい URL にマップすることをお勧めします。

于 2012-05-29T17:24:05.933 に答える