La liaison de modèle fonctionne-t-elle via une chaîne de requête dans asp.net mvc

La liaison de modèle fonctionne-t-elle également via une chaîne de requête?

Si j’ai une requête get comme:

GET /Country/CheckName?Country.Name=abc&Country.Id=0 HTTP/1.1 

La méthode suivante dans CountryController aurait-elle son argument oCountry contenant les propriétés Id et Name avec les valeurs de la chaîne de requête?

 public ViewResult CheckCountryName(Country oCountry) { //some code return View(oCountry); } 

Pour une raison quelconque, j’obtiens l’ID en tant que 0 et le nom en tant que null dans l’object oCountry. Que manque-t-il ?

Oui, la liaison de modèle prend en charge la liaison à partir de la chaîne de requête. Cependant, les mêmes règles de liaison de modèle s’appliquent ici également: les noms de propriété / expressions doivent correspondre dans votre demande et dans votre modèle.

Ainsi, si vous avez une propriété Name , vous devez disposer d’une clé Name dans la chaîne de requête. Si vous écrivez Country.Name le modèle de liaison commence par rechercher une propriété appelée Country , puis une propriété Name sur cet object country.

Donc, vous n’avez pas besoin du préfixe Country pour vos noms de propriété, votre requête devrait donc ressembler à ceci:

 /Country/CheckName?Name=abc&Id=1 HTTP/1.1 

Ou, si vous ne pouvez pas modifier la demande, vous pouvez spécifier le préfixe de votre paramètre d’action avec l’ BindAtsortingbute :

 public ViewResult CheckCountryName([Bind(Prefix="Country")]Country oCountry) { //some code return View(oCountry); }