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
に正しくリンクします
他の誰かがこれを見ましたか?
更新:
RouteConfig:
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
現在のルーティングスキーマに基づいて生成された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>