J'ai joué avec différents aspects de MVC depuis un certain temps, et j'ai atteint une situation où je ne suis pas sûr de la meilleure façon de résoudre un problème. J'espère que la communauté SO va m'aider ici: PFormulaire de commentaires Ajax dans ASP.NET MVC2, howto?
J'ai vu un certain nombre d'exemples de Ajax.BeginForm sur Internet, et il semble être une idée très chouette. Par exemple. vous avez une liste déroulante où vous sélectionnez un client - et en sélectionnant un, il va charger les détails de ce client dans un espace réservé sur la page. Cela fonctionne parfaitement bien.
Mais que faire si vous voulez lier une validation dans la boîte?
Imaginez simplement une page d'article, et les commentaires des utilisateurs dans le bas. Au-dessous de la zone des commentaires, il y a une case ajax-y "Ajouter un commentaire". Lorsqu'un utilisateur ajoute un commentaire, il apparaît dans la zone des commentaires, en dessous du dernier commentaire.
Si je définis Ajax.BeginForm pour ajouter le résultat de l'appel à la zone Commentaires, cela fonctionnera correctement. Mais que faire si les données publiées ne sont pas valides? Au lieu d'ajouter un commentaire "réussi" à la zone des commentaires, je dois montrer les erreurs de validation de l'utilisateur.
À ce stade, j'ai décidé que la zone à l'intérieur du Ajax.BeginForm sera à l'intérieur d'un partiel, et les soumissions du formulaire rendra ce partiel. La validation fonctionne bien. À chaque soumission, nous rechargeons le contenu à l'intérieur de l'élément de formulaire. Mais comment ajouter le commentaire réussi au sommet?
Autres points à considérer: Le formulaire de commentaire a également un bouton "Aperçu". Lorsque l'utilisateur clique sur Aperçu, je devrais charger le commentaire rendu dans une zone d'aperçu. Cela sera probablement aussi à l'intérieur de la zone de formulaire.
Je pensais utiliser des résultats JSON à la place. Lorsque l'utilisateur soumet le formulaire, le code du serveur génère un objet Json avec une valeur de succès, et html rend partiels comme certaines propriétés. Quelque chose comme
{ "success": true, "form": "<html form data>", "comment": "successful comment html to inject into the page" }
Ce serait une solution parfaite, sauf qu'il n'y a aucun moyen de MVC pour rendre une partie dans une chaîne, à l'intérieur du contrôleur (séparation du contexte, souvenez-vous?). UPD: On dirait que personne ne connaît de réponse à celle-ci. Cela signifie-t-il qu'il n'y a aucun moyen de le faire, ou vous ne le savez pas, les gars?
Ce n'est pas la personne comme réponse. Ce n'est pas clair quelle est votre question. –