69

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

他の誰かがこれを見たことがありますか?

アップデート:

ルート構成:

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

2 に答える 2

111

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

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

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

 <a href="@Url.Action("Information", "Admin", new { id = UrlParameter.Optional })">Add an Admin</a>
于 2013-10-01T07:59:41.403 に答える