Modifier élément FORM à quelque chose d'autre ou le supprimer tout en gardant tous les éléments de l'enfant
-
28-09-2019 - |
Question
J'ai intégré Asp.net MVC avec le site Sharepoint. Il fonctionne très bien. Mais j'utilise la page maître par défaut Sharepoint et (~masterurl/default.master
à savoir). le problème est que cette page maître particulier a la page entière enveloppée dans un élément de form
alors que toutes les pages ne sont que des pages Sharepoint normales Asp.net WebForm.
Mon contenu MVC devrait avoir ses propres éléments de form
et d'entrée que je voudrais soumettre au serveur. Ajax appels sont évidemment pas problématique. Je ne suis pas en mesure d'utiliser $("form").serializeArray()
si je garde l'élément form
d'origine. Mais postbacks néanmoins normales sont problématiques, car il y a des fonctionnalités WebForm sur les événements et soumettre leur enverraient façon trop de données au serveur.
Je vais utiliser postbacks normale ainsi que Ajax postbacks. Le principal problème étant postbacks normaux.
J'ai donc deux possibilités que les deux devraient fonctionner sur $(document).ready()
:
- Supprimer élément de forme et de garder tout autre contenu comme il est. En jQuery, il serait probablement dire préfixer élément
form
avec undiv
, déplacez son contenu à cette div puis supprimerform
. - modifier directement l'élément de
form
àdiv
. Ce serait probablement plus rapide en termes de traitement du navigateur, mais je ne sais pas comment le faire.
Donc, si quelqu'un peut élaborer une solution pour 2 et fournir des commentaires sur ces deux solutions possibles:. Que l'on doit faire et pourquoi
Modifier
Il y a une troisième possibilité. Je pouvais créer mes éléments d'entrée comme neede mais les chario dans un élément div
. Lorsque l'utilisateur voudrait soumettre mon forme (div
est pas une forme de toute façon) que je pouvais:
- dynamiquement
$("div.form").serializeArray()
appel - créer un élément de formulaire
- le remplir avec des valeurs sérialisées
- forme d'ajout de corps
- soumettre.
Il semble fastidieux, mais cela pourrait fonctionner. Encore deux premières solutions semblent plus simples.
La solution
Si vous soumettez via $.ajax()
Je voudrais simplement aller avec .serialize()
des éléments directement, comme ceci:
$.ajax({
url: "Path/Action",
type: "post",
data: $("#someContainer :input").serialize(),
success: function(data) {
//do something
}
});
Ou la version plus courte $.post()
:
$.post("Path/Action", $("#someContainer :input").serialize(), function(data) {
//do something
});
Cela ne nécessite pas de génération de <form>
ou autre supercherie, juste un courrier normal jQuery AJAX (ou GET
, tout ce qui est nécessaire).