Cet article est un article miroir de traduction automatique, veuillez cliquer ici pour accéder à l’article original.

Vue: 16017|Répondre: 1

[.NET Core] ASP.NET Implémentation de contraintes de routage personnalisées dans Core

[Copié le lien]
Publié sur 06/05/2019 09:30:30 | | |
Contraintes de routage

ASP.NET Core, vous pouvez passer des variables sur des URL en définissant des modèles de routage, et vous pouvez fournir des paramètres par défaut, optionnels et contraintes pour les variables.

La contrainte est utilisée en ajoutant le nom de contrainte spécifié à la route d’attributs, qui est utilisée comme suit :

Certaines contraintes sont déjà prévues dans le cadre, comme suit :

Contraintes
exemple
Exemples de matchs
illustrer
int
{id :int}
123456789, -123456789
Correspondre à tout entier
bool
{active :bool}
vrai, FAUX
Correspondre vrai ou faux (sensible à la majuscule)
date
{date de naissance :datetime}
31-12-2016, 31-12-2016 19:32
Correspond aux valeurs valides de DateTime (dans une localité fixe - voir avertissement)
Décimal
{price :décimal}
49.99, -1,000.01
Correspond aux valeurs décimales valides (dans une localité fixe - voir avertissement)
Double
{poids :double}
1.234, -1 001.01e8
Correspond à des valeurs doubles valides (dans une localité fixe - voir avertissement)
Flotteur
{poids :flottant}
1.234, -1 001.01e8
Correspond aux valeurs de flottement valides (dans une localité fixe - voir les avertissements)
Guid
{id :guid}
CD2C1638-1638-72D5-1638-DEADBEEF1638, {CD2C1638-1638-72D5-1638-DEADBEEF1638}
Correspond aux valeurs valides du GUID
long
{tic :long}
123456789, -123456789
Correspondance valide des valeurs longues
minlongueur(valeur)
{nom d’utilisateur :minlongueur(4)}
Meule
La chaîne doit comporter au moins 4 caractères
longueur(valeur)
{Nom du fichier :MaxLongueur(8)}
Richard
Les chaînes ne doivent pas dépasser 8 caractères
longueur(longueur)
{nom de fichier :longueur(12)}
somefile.txt
La chaîne doit comporter exactement 12 caractères
Longueur (min,max)
{filename :longueur(8,16)}
somefile.txt
La chaîne doit comporter au moins 8 caractères et pas plus de 16 caractères
min(value)
{age :min(18)}
19
La valeur entière doit être au moins 18
max(valeur)
{age :max(120)}
91
La valeur entière ne doit pas dépasser 120
portée (min,max)
{âge :plage(18,120)}
91
La valeur entière doit être d’au moins 18 et ne pas dépasser 120
Alpha
{name :alpha}
Meule
La chaîne doit être composée d’un ou plusieurs caractères alphabétiques (de a à z, à la différence de la capitale).
Regex (expression)
{SSN :Regex(^\d{{3}}-\d{{2}}-\d{{4}}$)}
123-45-6789
La chaîne doit correspondre à l’expression régulière (voir conseils pour définir les expressions régulières)
Obligatoire
{nom :requis}
Meule
Utilisé pour imposer la présence de valeurs non paramétriques lors de la génération d’URL


Les contraintes intégrées fonctionnent pour la plupart des cas d’usage courants, mais parfois il faut encore personnaliser l’effet souhaité.
Contraintes de routage personnalisées

Une contrainte personnalisée consiste à implémenter l’interface IRouteConstraint puis à surcharger la méthode Match, qui possède quatre paramètres.

Le premier paramètre, httpContext, est le contexte de la requête actuelle

Le second paramètre, route, est celui auquel appartient la contrainte actuelle

Le troisième paramètre, routeKey, est le nom de la variable actuellement vérifiée, comme id dans l’exemple au début de l’article
La quatrième valeur du paramètre est la valeur du dictionnaire que correspond l’URL actuelle, comme la route de l’exemple au début de l’article ; si l’URL est utilisateur/1, alors il existe un dictionnaire avec clé = id , valeur = 1. Bien sûr, il existe aussi des valeurs pour d’autres variables, comme contrôleur, action, etc.

Le cinquième paramètre, routeDirection, est une valeur énumérée qui indique si l’URL est demandée par le web ou générée par une méthode telle que Url.Action.

Par exemple, nous voulons définir une contrainte qui précise que les paramètres passés par la route doivent être la valeur d’énumération spécifiée.

Définissons d’abord un enum :


Alors définissez les contraintes :

Ajoutez des contraintes personnalisées à la méthode ConfigureServices dans Startup.cs :
Utilisation des contraintes sur les routes :

(WebApplicationTest est l’espace de noms actuel)


{id :int :min(2)} doit utiliser min(2), sinon il y aura un conflit pour id = 0 ou id = 1.

Exécutez le programme et associez nos contraintes personnalisées lorsque les routes sont api/test/0, api/test/1, api/test/true, et api/test/false.

Si la route est api/test/{entier supérieur à 2}, correspondez à la seconde route.

D’autres cas correspondent à la troisième voie.

conclusion

Les contraintes de routage sont une fonctionnalité très utile dans certains scénarios, qui peuvent réduire les paramètres de vérification dans le contrôleur, et la fonction de validation partielle des paramètres peut être implémentée en utilisant l’attruibute déclaratif, et certains contrôles en double peuvent être extraits en contraintes pour un usage public.

Le constructeur de contrainte peut être injecté, il peut donc être très extensible, et une certaine vérification des paramètres peut être effectuée en interrogeant la base de données.

Le site officiel ne mentionne que brièvement les contraintes de routage, et cet article fournit des exemples précis de l’utilisation des contraintes de routage.





Précédent:Zero Foundation C# (Version en couleur) Technologie de demain
Prochain:ASP.NET Core – Description de l’utilisation de l’importation de Razor View
 Propriétaire| Publié sur 06/05/2019 09:32:15 |
Démenti:
Tous les logiciels, supports de programmation ou articles publiés par Code Farmer Network sont uniquement destinés à l’apprentissage et à la recherche ; Le contenu ci-dessus ne doit pas être utilisé à des fins commerciales ou illégales, sinon les utilisateurs assumeront toutes les conséquences. Les informations sur ce site proviennent d’Internet, et les litiges de droits d’auteur n’ont rien à voir avec ce site. Vous devez supprimer complètement le contenu ci-dessus de votre ordinateur dans les 24 heures suivant le téléchargement. Si vous aimez le programme, merci de soutenir un logiciel authentique, d’acheter l’immatriculation et d’obtenir de meilleurs services authentiques. En cas d’infraction, veuillez nous contacter par e-mail.

Mail To:help@itsvse.com