jQuery, MVC3: Einreichung einer Teilansicht Formular in einem modalen Dialogfeld
Ich bin nur spielen, um mit jQuery und MVC3 im moment, und Frage mich, wie kann ich ein Formular Absenden, wurde die dynamisch geladen jQueryUI dialog?
Mein code bisher aus...
Javascript/jQuery
$(document).ready(function () {
$('.trigger').live('click', function (event) {
var id = $(this).attr('rel');
var dialogBox = $("<div>");
$(dialogBox).dialog({
autoOpen: false,
resizable: false,
title: 'Edit',
modal: true,
show: "blind",
hide: "blind",
open: function (event, ui) {
$(this).load("PartialEdit/" + id.toString());
}
}
});
$(dialogBox).dialog('open');
}) });
cshtml
<h2>Detail</h2><a href="#" class="trigger" rel="1">Open</a>
Controller
public ActionResult PartialEdit(int id)
{
return PartialView(new EditViewModel() { Name = id.ToString() });
}
[HttpPost]
public ActionResult PartialEdit(int id, FormCollection collection)
{
//What to put here???
}
Die Teilansicht
....@using (Html.BeginForm()){....Html.EditorFor(model => model.Name).....}....
Wie sehen Sie die load() in jQuery ruft eine PartialView namens PartialEdit.
Form ist das laden ganz gut, aber ich stecken geblieben bin, wie ich eigentlich abschicken?
Fragen
Wie bekomme ich die UI auf das Formular, und schließen Sie den dialog? Was soll der [HttpPost]PartialEdit zurück?
Im moment habe ich den submit-button, in der Teilansicht. Wenn angeklickt, wird das Formular gesendet, und der browser tut, was die [HttpPost]PartialEdit gibt (derzeit resultierende in eine leere Seite wird angezeigt).
Aber nach einem submit-ich möchte stattdessen auf ein Ereignis auslösen, auf der client-Seite (Vielleicht eine gesamte Seite aktualisiert werden, oder eine teilweise Aktualisierung der Seite je nach Kontext verwendet wird). Ich bin mir nicht sicher, wo Sie anfangen sollen?
Auch, sollte ich legen einen submit-button innerhalb der PartialView, oder sollte ich verwenden Sie die Schaltflächen auf der jQuery-UI-dialog?
Irgendwelche Vorschläge/Zeiger geschätzt.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen etwas zwischen den Zeilen:
und die controller-action zurückkehren konnte, JSON:
Den letzten Teil für Verbesserungen ist:
Nie solche url hardcoding in einer ASP.NET MVC-Anwendung. Verwenden Sie immer die url-Helfer beim Umgang mit urls. So machen Sie Ihre Anker ein wenig mehr Dynamik und statt:
verwenden:
dann:
isn't working
? Hat die$('form', html)
Selektor gibt die Formular-element, wenn Sie sich das in der FireBug-Konsole? Ist diesubmit
callback ausgeführt?$('#myForm').submit(...);
.Vielen Dank für all euren input, die Lösung, die funktioniert für mich im moment ist diese Funktion beigefügt, um den "Submit" - Schaltfläche im Dialogfeld....
...das ist ein bisschen eine Kombination der oben genannten Antworten.
Nochmals vielen Dank.
Ist die Schaltfläche ok unter dem partial view, aber es klingt wie Sie wollen, senden Sie das Formular per AJAX, so gibt es keine Aktualisierung der Seite. Sie können tun, wie diese:
Auf und liefert ein JSON-Objekt aus Ihrer HttpPost PartialEdit Aktion, die definiert
IsError
,Error
oderMessage
als notwendig. Sie bekommen können Züchter mit dieser, dann aber diese Antwort wäre zu lang 🙂Gut, jQuery submit tut nichts, Sie müssen ein Formular in der Teilansicht, was dann passieren wird, wenn sich der jQuery dialog submit ausführen, rufen Sie Ihre form Einreichen, die haben die Aktion schon definiert.
Siehe meinen code unten, das ist nicht ajax-submit
Und im Bezug auf die ur-Frage in post-action, sollten Sie mit Ihrem business-Logik dann rufen Sie "Return RedirectToAction("viewname",new {id=xxx})"
Stand ich vor einem ähnlichen problem heute, wo ich ein Formular Absenden, die in einer teilweisen Ansicht und teilweise Ansicht in einem dialog, die wurde von einer anderen form!
Die crux war, um die handler der form, in der teilweisen Ansicht und zu serialisieren.
Hier ist, wie ich mein dialog in der ersten form: