ASP.net MVC paramètre de route exception
Je l'ai et de l'action qui prend un paramètre userId:
~/Utilisateurs/Show?userId=1234
Tout fonctionne bien sauf lorsque le nom d'utilisateur fourni n'est pas un int ou est manquant.
Puis il lève cette exception:
Message: The parameters dictionary contains a null entry for parameter 'userId' of
non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Show(Int32,
System.Nullable`1[System.Boolean], System.String)' in 'S4U.Web.Mvc.Controllers.ProfileController'. An optional parameter must be a reference type,
a nullable type, or be declared as an optional parameter.
Parameter name: parameters
..après laquelle l'utilisateur est redirigé vers la page d'erreur.
Comment puis-je configurer la route si l'action n'est pas touché du tout, et cela jette une erreur 404 à la place?
OriginalL'auteur Lee Smith | 2012-03-02
Vous devez vous connecter pour publier un commentaire.
Comme mentionné dans mon commentaire sur Ufuk Hacıoğulları la réponse vous devez gérer une validation, soit par l'ajout d'une contrainte d'un itinéraire, grâce à avoir un type nullable si le paramètre peut être vide.
Pour la première approche, si vous avez une bonne contrainte, cela signifie que votre parcours ne sera pas ramassé - vous aurez besoin d'un fourre-tout de l'itinéraire ou de toute autre erreur de manipulation. Pour le type nullable vous pouvez tester dans l'action si elle a une valeur et d'agir en conséquence.
Garder action paramétrée comme fortes agit d'un modèle à viser.
OriginalL'auteur Rob West
Ne pas utiliser une chaîne comme l'a suggéré quelque part ci-dessous. Utilisation:
Que c'est la meilleure pratique.
Vous pouvez également le faire:
OriginalL'auteur Michal B.