J'ai créé un projet web api par défaut avec au moins ces deux formateurs de médias chargés. Les deux sont pour le même type de contenu:FormUrlEncodedMediaTypeFormatter vs JQueryMvcFormUrlEncodedFormatter
FormUrlEncodedMediaTypeFormatter: application/x-www-form-urlencoded
JQueryMvcFormUrlEncodedFormatter: application/x-www-form-urlencoded
Quand je fais un simple formulaire post http avec enctype="application/x-www-form-urlencoded"
il ne fonctionne qu'avec le JQueryMvcFormUrlEncodedFormatter
, cela signifie que mon objet complexe envoyé est non nul à côté serveur.
Lorsque je supprime le formateur JQueryMvcFormUrlEncodedFormatter
au démarrage de l'application et que je répète le simple formulaire http, je m'attends à ce qu'il fonctionne à nouveau, mais ce n'est pas le cas.
Je reçois une exception qu'aucun formateur approprié n'est chargé.
Cest pas vrai -actually-
Pourquoi ça ne marche pas?
P.S.
Je trouve que c'est la différence:
– System.Net.Http.Formatting.FormUrlEncodedMediaTypeFormatter, for handling HTML form URL-encoded data
– System.Web.Http.ModelBinding.JQueryMvcFormUrlEncodedFormatter, for handling model-bound HTML form URL-encoded data
mais je ne comprends pas la différence!
je ne l'utilise même pas jquery pour poster ma forme:
<form role="form" method="post" action="api/values" enctype="application/x-www-form-urlencoded">
<input type="text" class="form-control" name="firstName" placeholder="Enter first name">
<input type="text" class="form-control" name="lastName" placeholder="Enter last name">
<button type="submit" class="btn btn-default">Submit</button>
</form>
Il y a un ordre de précédence, il prend toujours le premier encodeur dans la liste.Les deux encodeurs, Jquery et le formulaire peuvent gérer le même type de demande. – Fals
J'ai écrit que j'ai supprimé le formateur jquery et que le formateur restant ne fonctionnait pas. Donc ce que vous dites est faux ou j'ai fait quelque chose de mal. – Pascal
Mon erreur! Regardez l'espace de noms complet de ces deux: Formatage et ModelBinding. Tout dans l'espace de noms Mise en forme est responsable de la sérialisation et de la désérialisation du message HTML pour le type demandé. ModelBinding, plus précisément JQueryMvcFormUrlEncodedFormatter, est une requête MediaTypeFormatting pour l'application/x-www-form-urlencoded. – Fals