web-dev-qa-db-fra.com

URL.Action (), y compris les valeurs de route

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 }
        );    
59
hjavaher

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>
88
Emad Feiz