J'essaie d'utiliser l'assistant ASP.NET MVC Ajax.BeginForm mais je ne souhaite pas utiliser les options d'insertion de contenu existantes lorsque l'appel est terminé. Au lieu de cela, je souhaite utiliser une fonction JavaScript personnalisée comme rappel.Comment utiliser Ajax.BeginForm MVC helper avec le résultat JSON?
Cela fonctionne, mais le résultat que je veux doit être retourné en tant que JSON. Malheureusement, le framework ne traite que les données sous forme de chaîne. Voici le code client. Le code serveur renvoie simplement un JsonResult avec un champ, UppercaseName.
<script type='text/javascript'>
function onTestComplete(content) {
var result = content.get_data();
alert(result.UppercaseName);
}
</script>
<% using (Ajax.BeginForm("JsonTest", new AjaxOptions() {OnComplete = "onTestComplete" })) { %>
<%= Html.TextBox("name") %><br />
<input type="submit" />
<%} %>
Au lieu d'afficher le résultat en majuscules, il affiche à la place undefined. content.get_data() semble contenir le JSON, mais seulement sous forme de chaîne. Comment puis-je convertir cela en objet?
Tout cela semble vraiment un peu compliqué. Existe-t-il un meilleur moyen d'obtenir le contenu résultant en utilisant Ajax.BeginForm? Si c'est si difficile, je peux complètement ignorer Ajax.BeginForm et utiliser la bibliothèque de formulaires jQuery.
Pouvez-vous montrer le code de votre action de contrôleur? – tvanfosson
L'action du contrôleur n'est pas le problème. Il s'agit littéralement d'une ligne: return Json (new {UppercaseName = name.ToUpper()}); –