2017-05-16 1 views
0

J'ai un contrôleur qui doit accepter un certain type de filtre, puis transmettre la demande contre un point de terminaison api web tels que http://crmorg/v2/api/Est-il possible d'accepter le filtre odata comme une chaîne plutôt que comme une odataqueryoptions?

public IHttpActionResult Get(ODataQueryOptions options) 
{ 
//execute GET against http://crmorg/v2/api/options.Request.RequestUri.PathAndQuery; 
} 

Au lieu de faire ce qui précède, je peux simplement accepter une chaîne comme un filtre OData, tels que:

public IHttpActionResult Get(string options) 
{ 
// 
} 

Puis-je passer le filtre OData directement dans le contrôleur comme une chaîne?

Répondre

0

En théorie, vous pouvez le faire. Mais:

  • Vous souhaitez ne pas être en mesure d'utiliser la propriété par défaut mappage
  • Vous auriez besoin besoin d'analyser la chaîne de requête et de soins pour toutes les variations d'entrée possibles (pensez à plusieurs params, le tri, la pagination , filtrage)
  • vous auriez besoin de bricoler la requête de base de données et ses options

en bref - il est rarement nécessaire de le faire. Essayez de regarder votre modèle et voyez s'il existe un moyen d'utiliser les fonctionnalités disponibles dans l'API Web.