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