J'ai un projet ASP.Net MVC très basique dans lequel j'aimerais utiliser un nom de paramètre id sur l'une de mes actions de contrôleur. De tout ce que j'ai lu cela ne devrait pas poser de problème mais pour une raison quelconque, l'utilisation d'un nom de paramètre id ne parvient pas à extraire la valeur de la chaîne de requête, mais si je la change pour un autre nom, cela fonctionnera.Le paramètre id de QueryString n'est pas utilisé
ne me reste qu'une seule voie dans mon global.asx
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = "" } // Parameter defaults
);
Ma méthode de commande est:
public ActionResult Confirm(string id)
{
....
}
URL de http://mysite/customer/confirm/abcd œuvres. Une URL de http://mysite/customer/confirm?id=abcd échoue.
Si je change la méthode de commande à:
public ActionResult Confirm(string customerID)
{
....
}
alors une URL de http://mysite/customer/confirm?customerID=abcd œuvres.
Y a-t-il quelque chose de spécial à propos de l'utilisation de "id" comme paramètre dans une chaîne de requête ASP.Net MVC?
Mise à jour: Changé id de 1234 à abcd, mes identifiants sont en fait des chaînes.
Je suppose que la valeur par défaut "" pour la valeur de route "id" est utilisée * avant * l'identifiant que vous fournissez dans la chaîne de requête , puisque "confirm? id =" ne correspond qu'aux deux premières valeurs de route (contrôleur et action). La question est; Pourquoi voulez-vous des URL comme "confirm? id ="? Il est lié à causer de la confusion; pas seulement pour le module de routage d'URL. :) – bzlm
J'espérais pouvoir garder le format d'URL que j'avais avant MVC qui utilisait id dans la chaîne de requête. – sipwiz
@sipwiz cette approche peut causer des problèmes subtils. Si vous utilisez MVC pour générer des liens, ce ne sera pas un problème - des choses comme 'HtmlHelper.ActionLink' sont routinières, ce qui signifie un lien vers la méthode d'action' Confirm' avec id = 1 car une valeur de route serait rendue comme '/ Confirm/1', pas comme' Confirm? Id = 1'. Avez-vous besoin de prendre en charge les liens entrants hérités, même pour les confirmations? Ensuite, voir ici: http://stackoverflow.com/questions/817325/asp-net-mvc-routing-legacy-urls-passing-querystring-ids-to-controller-actions – bzlm