Modifier élément FORM à quelque chose d'autre ou le supprimer tout en gardant tous les éléments de l'enfant

StackOverflow https://stackoverflow.com/questions/3880664

  •  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():

  1. 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 un div, déplacez son contenu à cette div puis supprimer form.
  2. 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:

  1. dynamiquement $("div.form").serializeArray() appel
  2. créer un élément de formulaire
  3. le remplir avec des valeurs sérialisées
  4. forme d'ajout de corps
  5. soumettre.

Il semble fastidieux, mais cela pourrait fonctionner. Encore deux premières solutions semblent plus simples.

Était-ce utile?

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).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top