paramètre d'id de routage mvc asp.net
Je suis en train de travailler sur un site en asp.net mvc. J'ai un parcours
routes.MapRoute(
"Default", //Route name
"{controller}/{action}/{id}", //URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional }
//Parameter defaults
);
qui est la route par défaut. Et j'ai une méthode
public ActionResult ErrorPage(int errorno)
{
return View();
}
Maintenant, si je veux exécuter ce code avec http://something/mycontroller/Errorpage/1
il ne fonctionne pas. Mais si je change le nom du paramètre id de errorno
elle fonctionne.
Est-il obligatoire pour avoir le même nom de paramètre de cette méthode? Ou dois-je créer des itinéraires pour de telles situations?
source d'informationauteur Parminder
Vous devez vous connecter pour publier un commentaire.
Donc, vous avez un paramètre nommé
errorno
et vous voulez qu'elle ait une valeur de paramètreid
. C'est évidemment le problème de liaison.Comment le résoudre:
créer une classe pour le modèle de classeur:
créer un attribut personnalisé pour le modèle personnalisé de liaison:
appliquer le nouvel attribut à vos paramètres de l'action en tant que de besoin:
Maintenant votre
errorno
aura la valeur, qui a été adoptée par leid
de votre url.Remarque: vous pouvez supprimer le paramètre
id
à partir de l'exemple ci-dessus, si vous êtes sûr que vous en avez besoin résolu que pourid
.Laissant de cette façon, vous permettra de vous lier d'autres paramètres.
Option 1
Option 2
Option 3
utiliser l'attribut bind préfixe:
@Parminder
La route par défaut peut gérer l'ensemble de l'action avec un paramètre "id". Et je pense que toute action n'besoin de ce paramètre. J'ai donc changer mon itinéraire par défaut
et vous pouvez ajouter une nouvelle route:
- ce juste la poignée de votre controll nom est "controllername". Si vous souhaitez gérer tous contrôleur, vous pouvez ajouter ceci:
Cette méthode permet de créer très peu de code dans le mondial.asax si vous avez besoin de beaucoup de route personnalisée.
Vous pourriez renommer le paramètre par défaut de la racine (qui n'est probablement pas une bonne idée) ou de le renommer dans la méthode d'action. L'ajout d'une autre racine ne va pas aider, car il sera le même que celui par défaut, et donné une url du moteur de routage ne peut pas distinguer entre les deux et prendra toujours le premier dans la liste.
essayez d'utiliser le même nom de paramètre dans la méthode d'action que dans la table de routage d'un paramètre d'url.
mondiale.asx
myController