1. ホーム
  2. asp.net-mvc

[解決済み] ルート値を含むURL.Action()

2022-03-04 02:41:02

質問

ASP.Net MVC 4のアプリで、Url.Actionヘルパーを以下のように使用しています。 @Url.Action("Information", "Admin")

このページは、管理者プロフィールの新規追加と編集の両方に使用されます。URLは以下の通りです。

 Adding a new:       http://localhost:4935/Admin/Information
 Editing Existing:   http://localhost:4935/Admin/Information/5 <==Admin ID

の時は Editing Existing のセクションで、新しい管理者を追加したいと考えたら、次のリンクをクリックします。

 <a href="@Url.Action("Information", "Admin")">Add an Admin</a>

しかし、問題は、上記のリンクが実際には http://localhost:4935/Admin/Information/5 . これは、私がそのページで既存の管理者を編集しているときにのみ発生します。それ以外の場所では、以下のように正しくリンクされています。 http://localhost:4935/Admin/Information

これを見た人はいますか?

UPDATE

RouteConfigです。

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );    

解決方法は?

現在のルーティングスキーマに基づいて生成されたmvcの送信URL。

Informationアクションメソッドはidパラメータを必要とし、ルートコレクションは現在要求されているURL(/Admin/Information/5)のidを持っているので、idパラメータは自動的に既存のルートコレクション値から取得されます。

この問題を解決するには、UrlParameter.Optionalを使用する必要があります。

 <a href="@Url.Action("Information", "Admin", new { id = UrlParameter.Optional })">Add an Admin</a>