6 Stimmen

Modales Formular in asp.net mvc RC mit Hilfe von jquery

Ich bin neu in ajax / jquery und habe Schwierigkeiten, ein einfaches Beispiel zu finden, das Folgendes enthält:

  • ASP.Net MVC RC1 (oder 2)
  • jquery
  • modales Formular

Ich möchte, dass der Benutzer in einer Ansicht (Elternteil) auf einen Link/Button klicken kann und ein modales Formular erscheint, das ein Formular enthält. Der Inhalt des modalen Dialogfelds sollte eine MVC-Ansicht (Kind) sein.

Nachdem das Formular abgeschickt wurde, möchte ich, dass das modale Dialogfeld verschwindet und ein Teil der Elternansicht aktualisiert wird.

12voto

Rob Rodi Punkte 3468

Also, du musst nicht alles auf einmal denken. Erstelle zuerst dein Formular in HTML und platziere es zentral auf der Seite, füge eine Aktion hinzu und lass es ohne Modal-Schick funktionieren.
Sobald die Logik deines Formulars funktioniert, kannst du jQuery einbinden. Ob du mit Modalität & dem Popup beginnen möchtest oder mit dem asynchronen Post mit jQuery ist dir überlassen. Ich mag es normalerweise, wenn es funktioniert, bevor ich es schön mache, also werden wir diesen Weg gehen. Wenn du die Standard <% Html.BeginForm... { %> Syntax zur Definition deines Formulars verwendet hast, dann entferne sie. Gehe altmodisch HTML! (Ich weiß, du kannst Html.BeginForm weiter anpassen, aber es ist einfacher, einfach HTML zu verwenden)

Jetzt kannst du jQuery in deinem document.ready verknüpfen oder wo du dein JS initialisierst.

$('#SomeForm').bind('submit', deineaktionsfunktion);

In deiner Aktionsform wirst du wahrscheinlich jQuery's Post aufrufen, wobei der Callback des Posts dein Formular ausblendet und den Rest der Seite aktualisiert. API-Dokumentation

function deineaktionsfunktion(e){
  $.post($(e).attr('action'), // wir erhalten das Aktion-Attribut (URL) des Formulars
         { title : $('#titleBox').val()}, // die Werte, die wir übergeben
         deineCallbackFunktion); 
  return false;  // Das ist wichtig, das wird das Event stoppen und verhindern, dass das Formular zweimal abgeschickt wird.
}

Jetzt hast du ein Ajax-Formular, also kannst du am Callback arbeiten.

function deineCallbackFunktion(data)
{
    // Mache etwas mit dem Ergebnis.
}

Jetzt können wir über Modalität sprechen. Es ist normalerweise etwas mühsam, aber du kannst ein jQuery-Plugin wie dieses oder etwas Ähnliches verwenden, um es für dich zu erledigen. Dann musst du nur noch Events verknüpfen, um das Popup anzuzeigen und auszublenden, und du bist fertig.

Wenn dein Ziel war, dass das Formular asynchron geladen wird, wenn der "anzeigen" Link geklickt wird, ist das etwas komplizierter, aber immer noch machbar. Du kannst jQuery.Load (API-Dokumentation) verwenden, um den HTML-Inhalt abzurufen und in den DOM einzufügen, aber du musst immer noch die Events verknüpfen (wieder mit bind('submit'...), wie oben beschrieben).

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X