J'ai un formulaire avec plusieurs onglets. Chaque onglet a son propre <form>
, défini comme ceci:Que doit renvoyer l'action lors de la soumission de plusieurs formulaires dans une application MVC?
<% Using Html.BeginForm("Save", "FirstSection")%>
J'ai un maître bouton Enregistrer qui présente toutes les formes sur la page comme ceci:
$("form").each(function() { $(this).submit(); });
Le problème est que je don sais pas ce que chaque action Enregistrer doit retourner:
<AcceptVerbs(HttpVerbs.Post)> _
Function Save(ByVal data As MyTable) As ActionResult
SaveTheDataHere()
Return View()
End Function
Si je Return View()
ça va échouer parce que je n'ai pas « get » équivalent pour l'action Enregistrer. Ce que je veux vraiment que le poste à faire est rien - juste enregistrer les données et être fait.
Y a-t-il une meilleure valeur de retour à utiliser?
Le problème est que je ne charge que les onglets quand ils sont vus, parce que le chargement de tous les onglets tout le temps ralentit tout. Si j'ai un grand formulaire, tous les champs ne seront pas chargés, donc mon Save pensera que les champs non chargés devraient être masqués. – gfrizzle
Dans ce cas, votre action Sauvegarder doit être assez intelligente pour voir la différence entre le champ vide et le champ qui n'existe pas dans le formulaire. Le classeur de modèle par défaut dans MVC fait cela - quand vous appelez votre contrôleur UpdateModel (modèle) seulement les champs existant dans la demande sont mis à jour. Vous pouvez charger uniquement le premier onglet par défaut, puis étendre le formulaire avec ajax chaque fois que l'utilisateur cliquera sur un nouvel onglet, et publier le formulaire entier avec un bouton de soumission. Le classeur modèle ne mettra à jour que les champs existants. –
PanJanek