Asp.Net MVC Ajax.BeginForm ist nicht Absenden via Ajax
Ich habe mein Formular wie folgt
<div id="contact-form" class="hidden" title="Online Request Form">
@Using (Ajax.BeginForm("Contact", "Main",
Nothing,
New AjaxOptions With {.UpdateTargetId = "status", .HttpMethod = "post"},
New With {.id = "contactUs"}))
@<div>
@Html.LabelFor(Function(m) m.Name)<br />
@Html.TextBoxFor(Function(m) m.Name)<br />
@Html.LabelFor(Function(m) m.Phone)<br />
@Html.TextBoxFor(Function(m) m.Phone)<br />
@Html.LabelFor(Function(m) m.Email)<br />
@Html.TextBoxFor(Function(m) m.Email)<br />
@Html.LabelFor(Function(m) m.Question)<br />
@Html.TextAreaFor(Function(m) m.Question)<br />
@Html.LabelFor(function(m) m.Security)<br />
@Html.TextBoxFor(Function(m) m.Security)<br />
<noscript>
<input type="submit" name="submit" value="Ok" />
</noscript>
@Html.ValidationSummary("Oops, please correct the errors.")<span id="status">@TempData("status")</span>
</div>
End Using
</div>
Und ich öffne es in einem jQuery-UI-Modales Fenster
<script>
$(function () {
//Open the modal dialog from the div.contact-us click event
$('#contact-us').click(function () {
$('#contact-form').dialog('open');
return false;
});
//Manage the modal dialog behavior.
$('#contact-form').dialog({
modal: true,
autoOpen: false,
buttons: {
Cancel: function () {
$(this).dialog('close');
},
Ok: function () {
$('form#contactUs').trigger('submit');
}
}
});
});
</script>
Wenn ich auf die Schaltfläche "OK", wird die Buchung zu den entsprechenden controller, es ist aber nicht posten über AJAX
''# fix the StackOverflow code coloring issue.
<HttpPost()>
Function Contact(ByVal contactForm As Models.ContactForm) As ActionResult
ViewData("Testimonials") = Helpers.GetTestimonials
If ModelState.IsValid Then
''# Submit the email
TempData("status") = "Thank you, we will be in touch"
Else
''# Return False
TempData("status") = "Oops, please correct the errors."
End If
If Request.IsAjaxRequest Then
Return Content(TempData("status").ToString)
Else
Return View("Index")
End If
End Function
Was mache ich falsch? Nachdem ich das Formular abschicken, meine URL ist http://example.com/Main/Contact das sagt mir, dass IsAjaxRequest = false
BEARBEITEN
Auch wenn ich nicht verwenden, die jquery-ui - "ok" - Taste und fügen Sie einfach <input type="submit" name="submit" value="Ok" />
zu der form, die form Beiträge ohne Ajax
InformationsquelleAutor der Frage Chase Florell | 2010-12-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Haben Sie die jquery-ajax-Skript enthalten? Ich habe bemerkt, diese Art von Verhalten, wenn ich es nicht zählen es:
InformationsquelleAutor der Antwort Jeff Ogata
Habe ich noch nicht gearbeitet, mit der ASP.NET MVC AJAX-Helfer in eine Weile, aber ich glaube
Ajax.BeginForm
fügt einen inline -onsubmit
handler in der generierten (HTML -) markup.Wenn dies der Fall ist, ruft Absenden dieses Formulars programmgesteuert (Ihr jQuery, löst die
submit
- event) nicht nennenonsubmit
Funktion der form, die am ehesten bricht die normalen submit-Aktion und das Formular sendet per AJAX.Für weitere Informationen über warum dies geschieht, überprüfen Sie heraus in diesem Zusammenhang beantworten.
Als alternative, können Sie veröffentlichen das Formular über AJAX mit
Ich gefunden habe, entweder von diesen Methoden, die weniger Aufwand als mit Microsofts AJAX-Helfer.
InformationsquelleAutor der Antwort Andrew Whitaker