Lier les paramètres de la requête à un modèle dans ASP.NET de Base
Je suis en train d'utiliser le modèle de liaison de paramètres de requête à un objet de recherche.
Mon objet de recherche est
[DataContract]
public class Criteria
{
[DataMember(Name = "first_name")]
public string FirstName { get; set; }
}
Mon contrôleur a la suite de l'action
[Route("users")]
public class UserController : Controller
{
[HttpGet("search")]
public IActionResult Search([FromQuery] Criteria criteria)
{
...
}
}
Quand j'ai appeler le point de terminaison comme suit .../users/search?first_name=dave
les critères de propriété sur le contrôleur de l'action est nulle.
Cependant, je peux appeler le point de terminaison non pas comme serpent cas .../users/search?firstName=dave
et les critères de propriété contient la valeur de la propriété. Dans ce cas, la Liaison de Modèle a travaillé mais pas lorsque j'utilise snake_case.
Comment puis-je utiliser snake_case avec la Liaison de Modèle?
Double Possible de le Modèle de liaison en ASP.NET de Base à la carte souligne à titre de cas de la propriété des noms
OriginalL'auteur Carl Thomas | 2017-03-21
Vous devez vous connecter pour publier un commentaire.
Vous devez ajouter
[FromQuery]
attribut dans le modèle de propriétés individuellementJe ne peux pas obtenir que cela fonctionne, mais il est marqué comme réponse.
Je veux juste ajouter que j'ai eu un problème que d'autres personnes pourraient rencontrer trop: j'ai nommé mon paramètre "modèle". Mon objet a une propriété qui a également été nommé "modèle". La liaison de données ne fonctionnera pas jusqu'à ce j'ai renommé mon paramètre.
FromQuery
se trouve dansMicrosoft.AspNetCore.Mvc
paquet, c'est un peu triste pour ajouter cette dépendance pour le projet sur lequel vous n'stocker vos POCO.OriginalL'auteur Carl Thomas
Solution pour .net de base 2.1 et 2.2
Ou sans attributs que vous pouvez faire quelque chose comme ce qui est plus propre je pense (bien sûr, si les propriétés du modèle sont les mêmes que les paramètres de la requête).
Pendant ce temps, je l'utilise pour .net de base 2.1
C'est la bonne réponse pour NetCore 2.1 et au-dessus, l'on a accepté la réponse est un anachronisme.
Ce devrait être la accepté de répondre ou de l'OP qui se trouve être celui qui a donné la accepté de répondre à mettre à jour leurs réponses.
Je pense que le problème est que cette réponse ne tient pas compte de la spécificité de la question. L'OP exige expressément un autre nom pour la propriété, et ce n'est pas de soutenir que, comme indiqué par la personne qui a donné cette réponse.
Je suis en utilisant .net core 2.2 et cette méthode ne fonctionne pas pour moi. Cependant, la accepté de répondre.
OriginalL'auteur peyman gilmour