Modele de body-uri

Il existe plusieurs façons de définir un classeur de modèle. Tout d`abord, vous pouvez ajouter un attribut [ModelBinder] au paramètre. Enfin, vous pouvez ajouter un fournisseur de Binder de modèle à la HttpConfiguration. Un fournisseur de Binder de modèle est simplement une classe de fabrique qui crée un classeur de modèle. Vous pouvez créer un fournisseur en dérivant de la classe ModelBinderProvider. Toutefois, si votre classeur de modèle gère un seul type, il est plus facile d`utiliser le SimpleModelBinderProvider intégré, qui est conçu à cet effet. Le code suivant montre comment procéder. Le nom du paramètre à lier est stocké dans la propriété ModelBindingContext. ModelName.

Le classeur de modèle recherche une clé avec cette valeur dans le dictionnaire. Si la valeur existe et peut être convertie en GeoPoint, le classeur de modèle attribue la valeur liée à la propriété ModelBindingContext. Model. Vous pouvez également ajouter un attribut [ModelBinder] au type. L`API Web utilisera le classeur de modèles spécifié pour tous les paramètres de ce type. Pour créer un classeur de modèle, implémentez l`interface IModelBinder. Cette interface définit une méthode unique, BindModel: recherchez un ParameterBindingAttribute sur le paramètre. Cela inclut [FromBody], [FromUri] et [ModelBinder], ou des attributs personnalisés. HttpParameterBinding est responsable de la liaison d`un paramètre à une valeur.

Dans le cas de [ModelBinder], l`attribut retourne une implémentation HttpParameterBinding qui utilise un IModelBinder pour effectuer la liaison réelle. Vous pouvez également implémenter votre propre HttpParameterBinding. Les classeurs de modèle sont une instance spécifique d`un mécanisme plus général. Si vous examinez l`attribut [ModelBinder], vous verrez qu`il dérive de la classe abstraite ParameterBindingAttribute. Cette classe définit une méthode unique, GetBinding, qui retourne un objet HttpParameterBinding: avec un fournisseur de liaison de modèle, vous devez toujours ajouter l`attribut [ModelBinder] au paramètre, pour indiquer à l`API Web qu`il doit utiliser un classeur de modèle et non un type de média Formateur. Mais maintenant, vous n`avez pas besoin de spécifier le type de classeur de modèle dans l`attribut: cela indique à l`API Web d`utiliser la liaison de modèle avec la fabrique de fournisseur de valeur spécifiée, et de ne pas utiliser les autres fournisseurs de valeur enregistrés. Pour forcer l`API Web à lire un type simple à partir du corps de la requête, ajoutez l`attribut [FromBody] au paramètre: Si vous le souhaitez, vous pouvez remplacer l`intégralité du service IActionValueBinder par une implémentation personnalisée. Voici une méthode de contrôleur qui utilise l`attribut [IfNoneMatch]. Ești proaspătă mămică? Alege un corps Nou-Născut de la Kara bébé, pentru ca micuțul tău să se simtă răsfățat DIN primul moment în Care ajunge pe Lume! Pentru că ne-am gândit și la confortul tău, AM creat modelul Body 7 Capse, un Body petrecut pentru bebe, cu care Cine VEI îmbrăca ușor Copilul chiar și atunci Când te grăbești. Și pentru că Mereu avem nevoie de Momente de veselie, ți-am pregătit mai multe Body-uri pentru copii cu mesaje haioase, Care, Cu siguranță, vor stârni zâmbete! Ajoutez la fabrique de fournisseur de valeurs à la HttpConfiguration comme suit. Le code suivant montre une classe GeoPoint qui représente un point géographique, plus un TypeConverter qui convertit des chaînes en instances GeoPoint.

La classe GeoPoint est décorée avec un attribut [TypeConverter] pour spécifier le convertisseur de type. (Cet exemple a été inspiré par le billet de blog de Mike Stall comment lier à des objets personnalisés dans les signatures d`action dans MVC/WebAPI.) Pour appliquer un HttpParameterBinding personnalisé, vous pouvez définir un attribut qui dérive de ParameterBindingAttribute. Pour ETagParameterBinding, nous définirons deux attributs, un pour les en-têtes If-Match et un pour les en-têtes If-None-Match. Les deux dérivent d`une classe de base abstraite. . Pour forcer l`API Web à lire un type complexe à partir de l`URI, ajoutez l`attribut [FromUri] au paramètre. L`exemple suivant définit un type GeoPoint, ainsi qu`une méthode de contrôleur qui obtient le GeoPoint à partir de l`URI. Mike Stall a écrit une bonne série de messages de blog sur la liaison de paramètres de l`API Web: vous pouvez définir votre propre DefaultActionValueBinder.

Les commentaires cont fermés.