Ändern Sie das Formularelement in etwas anderes oder löschen Sie es, während Sie alle Kinderelemente behalten

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

  •  28-09-2019
  •  | 
  •  

Frage

Ich habe ASP.NET MVC in die SharePoint -Site integriert. Es funktioniert großartig. Aber ich verwende auch die Standard -SharePoint -Masterseite (~masterurl/default.master nämlich). Das Problem ist, dass auf dieser bestimmten Master -Seite die gesamte Seite in a eingewickelt ist form Element, während alle SharePoint -Seiten nur normale ASP.NET -Webform -Seiten sind.

Mein MVC -Inhalt sollte seinen eigenen haben form und geben Elemente ein, die ich dem Server einreichen möchte. Ajax -Anrufe sind offensichtlich nicht Das problematisch. Ich kann nicht benutzen $("form").serializeArray() Wenn ich das Original halte form Element. Trotzdem sind normale Postbacks problematisch, da die Funktionen von Webform -Ereignissen auf Webform -Ereignisse vorhanden sind und sie viel zu viele Daten an den Server senden würden.

Ich werde normale Postbacks sowie Ajax -Postbacks verwenden. Das Hauptproblem ist das normale Postbacks.

Ich habe also zwei Möglichkeiten, auf die beide laufen sollten $(document).ready():

  1. Löschen Sie das Formularelement und behalten Sie alle anderen Inhalte so, wie es ist. In jQuery würde es wahrscheinlich bedeuten, sich vorzubereiten form Element mit a div, Verschieben Sie seinen Inhalt in diesen Div und löschen Sie dann form.
  2. Sich direkt ändern form Element zu div. Dies wäre in Bezug auf die Browserverarbeitung wahrscheinlich schneller, aber ich weiß nicht, wie es geht.

Wenn also jemand eine Lösung für 2. ausarbeiten kann und einige Eingaben für diese beiden möglichen Lösungen liefern kann: welche erledigt werden sollte und warum.

Bearbeiten

Es gibt auch eine dritte Möglichkeit. Ich könnte einfach meine Eingabelemente als Bedarf erstellen, aber sie in a einhalten div Element. Wenn der Benutzer meine einreichen möchte bilden (div ist sowieso keine Form) Ich könnte:

  1. dynamisch rufen $("div.form").serializeArray()
  2. Erstellen Sie ein Formularelement
  3. Populieren Sie es mit serialisierten Werten
  4. Formular an den Körper anhängen
  5. Senden Sie es.

Scheint langweilig, aber es könnte funktionieren. Immer noch die ersten beiden Lösungen scheinen einfacher zu sein.

War es hilfreich?

Lösung

Wenn Sie über einreichen $.ajax() Ich würde einfach mit gehen .serialize() der Elemente direkt wie folgt:

$.ajax({
  url: "Path/Action",
  type: "post",
  data: $("#someContainer :input").serialize(),
  success: function(data) {
    //do something
  }
});

Oder desto kürzer $.post() Ausführung:

$.post("Path/Action", $("#someContainer :input").serialize(), function(data) {
  //do something
});

Dies erfordert keine <form> Generation oder andere Tricks, nur ein normaler jQuery Ajax -Beitrag (oder GET, was auch immer nötig).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top