Fermer

octobre 28, 2020

Comment passer plusieurs paramètres, méthode GET ASP.NET Core MVC


Vous avez plusieurs options pour transmettre plusieurs paramètres à une méthode GET: FromRouteAttribute, FromQuery et Model Binding.

Dans cet article, nous allons apprendre comment passer plusieurs paramètres à une méthode GET . Cet article traite des points suivants:

  • Comment passer plusieurs paramètres à une méthode GET?
  • Passer plusieurs paramètres à l'aide de FromRouteAttribute
  • Passer plusieurs paramètres à l'aide de FromQuery
  • Qu'est-ce que Liaison de modèle ?
  • Conclusion

Comment passer plusieurs paramètres à une méthode GET?

Il existe d'autres moyens de transmettre plusieurs paramètres à la méthode, mais voici les options principalement utilisées pour la méthode GET:

  • Using FromRouteAttribute
  • Using FromQuery

Passing multiple parameters using FromRouteAttribute

Dans cette option, les paramètres sont liés à l'aide du données d'itinéraire de la demande actuelle.

Exemple:



 public  IActionResult  Get  ( int  id ) 


 [ HttpGet  ( "{id} / {backendOnly}" ) ] 
 p ublic  IActionResult  Get  ( int  id   string  backendOnly ) 


 [ HttpGet  ([19659021] "{id} / {premier} / {deuxième}" ) ] 
 public  IActionResult  Get  ( int  id  ,   string  first   string  second ) 
 // Requête GET utilisant les données d'itinéraire
https: // localhost: 44363/2
https: // localhost: 44363/2 / premier
https: // localhost: 44363/2 / premier / seconde

Passage de plusieurs paramètres à l'aide de FromQuery

Dans cette option, les paramètres sont liés à l'aide de la chaîne de requête de requête.

Exemple:



 [ HttpGet  ( "details" ) ] 
 public  IActionResult  Détails  ( int  id ) 


 [ HttpGet  ( ] "details" ) ] 
 public  IActionResult  Details  ( int  id   string  first  ]) 


 [ HttpGet  ( "details" ) ] 
 public  IActionResult  Details  ( int  id   string  first   string  second ) 
 // Requête GET à l'aide des paramètres de requête
https: // localhost: 44363 / details? id = 2
https: // localhost: 44363 / details? id = 2 && first = csharp
https: // localhost: 44363 / details? id = 2 && first = csharp && second = mvc

Qu'est-ce que la liaison de modèle?

La liaison de modèle fonctionne avec des données provenant de requêtes HTTP et transmises au contrôleur et aux pages Razor en tant que paramètres. Il fonctionne de la manière suivante:

  • Il récupère les données de diverses sources comme la chaîne de requête, les champs de formulaire et les routes de données
  • Il fournit des données aux méthodes du contrôleur en tant que paramètre
  • Il convertit les données en types .NET
  • Il met à jour les propriétés des types complexes

Sources de liaison de modèle

Il obtient les données de diverses sources sous forme de paires clé-valeur à partir des sources suivantes:

  • Champs de formulaire
  • Corps de la requête
  • Paramètres des données d'itinéraire
  • Paramètres de chaîne de requête
  • Fichiers téléchargés

Pour travailler avec la liaison de modèle nous devons utiliser les attributs suivants:

  • Attribut BindProperties – Ceci peut être appliqué à niveau de classe pour définir toutes les propriétés à mapper avec la requête HTTP

    Exemple:

     [ BindProperties ] 
     public   class   GetRequest 
     {
         public   int  Id  {  get ;   set ;  } 
         public   string  FrontEnd  {  get ;   set ;  } 
         public   ] string  BackEnd  {  get ;   set ;  } 
    } 
     
  • Attribut BindProperty – Ceci peut être appliqué si vous souhaitez spécifier une propriété particulière à utiliser

    Exemple:

     [ BindProperty ] 
     public [19659027] int  Id  {  get ;   set ;  } 
     

Pour travailler avec des types complexes, les attributs intégrés sont disponibles comme suit:

  • Attribut BindRequired – Cela fait que la liaison de modèle ajoute une erreur d'état de modèle si la liaison de propriété de modèle ne se produit pas [19659004] Attribut BindNever – Il empêche la liaison de données à une propriété de modèle particulière
  • Attribut Bind – Il peut être appliqué à des paramètres de classe ou de méthode et spécifie les propriétés bind dans le modèle

Par exemple, nous transmettons plusieurs paramètres à la méthode GET mais si nos paramètres dépassent trois, alors ce n'est pas lisible et la meilleure pratique à utiliser de cette façon. Nous pouvons utiliser le modèle de classe comme paramètre d'une méthode GET avec liaison de modèle comme suit:


 [ BindProperties ] 
 public   class   GetRequest 
 {
    public   int  Id  {  get ;   set ;  } 
    public   string  FrontEnd  {  ] get ;   set ;  } 
    public   string  BackEnd  {  get ;   set ;  } 
} 

 [ HttpGet ] 
 public  IActionResult  GetAction  ( GetRequest getRequest ) 
 https: // localhost: 44363 / details? id = 2 && first = csharp && second = mvc

Dans l'exemple ci-dessus, vous pouvez voir comment nous utilisons la liaison de modèle avec la méthode d'action GET et transmettons plusieurs paramètres à l'aide d'une chaîne de requête, mais la liaison de modèle en extrait les données et se lie au modèle et transmet ce modèle à la méthode d'action GET.

Exemple: Passer plusieurs paramètres en utilisant à la fois FromRouteAttribute, FromQuery

Nous pouvons utiliser les deux options pour passer plusieurs paramètres à une méthode GET comme suit:


 [ HttpGet  (  "id" ) ] 
 public  IActionResult  BothDetails  ( int  id   string  backendOnly   string  frontendOnly ) 
 // GET request en utilisant les deux méthodes
https: // localhost: 44363/3? backendOnly = csharp && frontendOnly = angular

Dans l'exemple ci-dessus, nous passons un paramètre en utilisant FromRouteAttribute et deux paramètres en utilisant FromQuery .

Vous pouvez également télécharger cet exemple de ici .

Conclusion

Dans cet article, nous avons discuté des moyens de passer plusieurs paramètres à une méthode GET: FromRouteAttribute FromQuery and Model Binding en utilisant exemples. Si vous avez des suggestions ou des questions concernant cet article, veuillez me contacter.

«Apprenez-le, partagez-le.»





Source link