Méthode ASP.Net Mvc 3 Url.Action utilise les valeurs de paramètre de la demande précédente
Lorsque les Url sont générés automatiquement à l'aide de la Url.Action
helper, si une page contient une ligne similaire à
@Url.Action("Edit","Étudiant")
devrait générer une url comme domain/student/edit
et de son travail comme prévu.
Mais si l'url demandée contient certains paramètres, comme domain/student/edit/210
, le code ci-dessus utilise ces paramètres à partir de la précédente demande et génère quelque chose de semblable, même si je n'ai pas prévu un tel paramètre à la Action
méthode.
En bref, si l'url demandée contient tous les paramètres, tout auto généré des liens de la page (servi pour cette demande) comprennent les paramètres ainsi, peu importe si je les préciser ou non dans le Url.Action
méthode.
Ce qui va mal?
source d'informationauteur Mat J
Vous devez vous connecter pour publier un commentaire.
Bizarre, n'arrive pas à reproduire le problème:
et à l'intérieur de
Index.cshtml
:Maintenant, quand je demande
/home/index/123
l'url helper génère/home/about
comme prévu. Pas de fantôme paramètres. Alors, comment est-ce que votre scénario diffère?Mise à JOUR:
Maintenant que vous avez précisé votre scénario, il semble que vous avez les éléments suivants:
et à l'intérieur de
Index.cshtml
que vous essayez d'utiliser:Si vous demandez
/home/index/123
cela génère/home/index/123
à la place de l'/home/index
(ou simplement/
prise en compte des valeurs par défaut).Ce comportement est par la conception. Si vous souhaitez la modifier, vous devez écrire votre propre helper qui ignore l'itinéraire actuel des données. Voici à quoi il pourrait ressembler:
Cela va générer la bonne url que vous attendiez. Bien sûr, c'est laid. Je vous recommande de l'encapsulation dans une réutilisables helper.
Utilisation Darin, en réponse à partir de ce question similaire.
Utilisation ActionLink surcharge qui utilise des paramètres et de l'offre null
Vous pourriez inscrire route personnalisée pour cette action, par exemple:
vous pouvez ensuite utiliser
url.RouteUrl("Domain_EditStudentDefault")
url RouteUrl helper remplacer avec seulementrouteName
paramètre qui génère une url sans paramètres.