J'ai une application ASP.Net MVC 4 et j'utilise l'aide de Url.Action comme ceci: @Url.Action("Information", "Admin")
Cette page est utilisée pour ajouter un nouveau profil et modifier un profil administrateur. Les URL sont les suivantes:
Adding a new: http://localhost:4935/Admin/Information
Editing Existing: http://localhost:4935/Admin/Information/5 <==Admin ID
Lorsque je suis dans la section Editing Existing
du site et que je souhaite ajouter un nouvel administrateur, je clique sur le lien suivant:
<a href="@Url.Action("Information", "Admin")">Add an Admin</a>
Le problème cependant que le lien ci-dessus va réellement à http://localhost:4935/Admin/Information/5
. Cela ne se produit que lorsque je suis dans cette page en train de modifier un administrateur existant. Tous les autres sites du site Web renvoient correctement à http://localhost:4935/Admin/Information
Quelqu'un d'autre a-t-il vu cela?
PDATE:
RouteConfig:
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
url sortant dans MVC généré sur la base du schéma de routage actuel.
parce que votre méthode d'action Information requiert le paramètre id et que votre collection de routes a l'id de votre URL demandée actuelle (/ Admin/Information/5), le paramètre id est automatiquement obtenu à partir des valeurs de collection de routes existantes.
pour résoudre ce problème, vous devez utiliser UrlParameter.Optional:
<a href="@Url.Action("Information", "Admin", new { id = UrlParameter.Optional })">Add an Admin</a>