Je semble avoir un problème avec le fait que MVC remplisse mon paramètre de modèle personnalisé lorsqu'il est appelé via GET au lieu de POST.ASP.NET MVC ModelBinder ne fonctionne pas avec les requêtes GET et/ou jQuery AJAX?
J'ai un extrait de code JavaScript qui appelle dans une action comme ceci:
$.getJSON('<%= Url.Action("DoSearch") %>' + location.search,
function(data) {
if (data.Result == "OK") {
location.href = location.href;
}
});
Ce qu'il fait, est essentiellement appeler une action séparée, en lui transmettant les mêmes querystrings que la page d'appel. Ensuite, si le résultat est "OK", il actualise la page en cours.
L'action est définie comme suit:
public ActionResult DoSearch(SearchParameters searchParameters)
Le modèle est le suivant:
public class SearchParameters
{
public string Query;
...
}
URL d'appel (vérifié avec firebug) est comme /DoSearch?Query=some+query
. (Également essayé /DoSearch?searchParameters.Query=some+query
sans succès)
Peu importe ce que j'ai essayé, mon paramètre est toujours aussi vide (non nul, juste tous les paramètres en cours d'initialisation à leurs valeurs par défaut)
Si je définis l'action Comme ceci à la place:
public ActionResult DoSearch(string Query, ...)
Puis mes paramètres sont remplis correctement. Pas avec le modèle cependant.
Je suppose:
a) soit peuplant le modèle d'objet ne fonctionne pas pour les requêtes GET.
b) Je fais quelque chose de mal
Toutes les idées? Merci.
Oups, c'est exact. Ça fonctionne maintenant. J'aimerais qu'il y ait plus de documentation à ce sujet. Merci beaucoup. – andreialecu
Belle réponse Thomas. +1 - Félicitations! –
Le manque de documentation est appelé "convention". :) –