MVC WebApi HttpGet avec des objets complexes

J'ai déjà un WebApi action, que je veux changer de HttpPost à HttpGet. Il faut actuellement un seul objet complexe comme paramètre.

Le modèle:

public class BarRequest
{
    [JsonProperty("catid")]
    public int CategoryId { get; set; }
}

Le contrôleur:

public class FooController : ApiController
{
    //[HttpPost]
    [HttpGet]
    [ActionName("bar")]
    public void Bar([FromUri] BarRequest request)
    {
        if (request != null)
        {
            //CategoryId should be 123, not 0
            Debug.WriteLine("Category ID :: {0}", request.CategoryId);
        }
    }
}

Maintenant, quand je envoyer la requête suivante, tout fonctionne comme prévu.

GET /foo/bar?CategoryId=123

Également l'ancien POSTE demande a fonctionné comme prévu.

POST /foo/bar {"catid":123}

Mais maintenant j'ai besoin de la suite de la demande de travail:

GET /foo/bar?catid=123

Comment puis-je y arriver?

  • Pourquoi ne pas simplement utiliser le code de catégorie pour ce faire? Ou pourquoi ne pas utiliser CatID comme le nom de la propriété, ou de l'utilisation CatID en tant que paramètre à la méthode?
  • Le modèle réel a beaucoup plus de propriétés. Propriété de nommage ne peut pas être changé (de l'intitulé de chaque côté - serveur/c# et client/js).