Ich habe einen Bootstrap-Assistenten mit mehreren Schritten erstellt. Wenn ein Benutzer im zweiten Schritt des Assistenten auf die Schaltfläche "Speichern & weiter" klickt, möchte ich die eingegebenen Formulardaten in den zugrunde liegenden Datenspeicher übergeben, bevor ich zum dritten Schritt übergehe. Ich kann nicht scheinen, die Formularunterordnung zu arbeiten, die actionmethod auf dem Controller wird nicht genannt. Dies ist das Javascript auf der Seite, trifft es wird, aber die Controller-Aktion ist nichtSenden von Formulardaten für einen bestimmten Bootstrap-Assistenten Schritt
$("#scheduleReport").on("click", function() {
// Get the record's ID via attribute
//var id = $(this).attr('data-id');
$('#frmAddSchedule').validate();
$('#frmAddSchedule').submit();
});
$('#frmAddSchedule').on('submit', function (e) {
var $form = $(e.target);
if ($form.valid()) {
e.preventDefault();
$.ajax({
url: '@Url.Action("Create", "ReportScheduler")',
data: $form.serialize(),
async: true,
type: 'POST',
success: function (returnval) {
if (returnval.success == true) {
$("#schedulerGrid").igGrid("dataBind");
}
if (returnval.success == false) {
//$form.parents('.bootbox').modal('hide');
bootbox.alert({ title: '<div class="text-center text-danger"><i class="fa fa-exclamation-triangle"></i> ERROR</div>', message: returnval['responseText'] });
}
},
error: function (returnval) {
//$form.parents('.bootbox').modal('hide');
bootbox.alert(returnval['responseText']);
}
});
}
});
und die Controller-Aktion Methode
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Create([Bind(Prefix = "Schedule")]ReportScheduleViewModel item)
{
gibt es irgendwelche 'best practices' um das zu tun? Was mache ich falsch ?
Ich habe versucht, Ihren Code, aber es hat nicht funktioniert, die Controller-Aktion ist immer noch nicht getroffen (MVC & C#), auch was meinst du mit diesem async: wahr, // Bitte nicht verwenden! :-) – proteus
Wenn Sie "async: false" verwenden, friert Ihr Browser jedes Mal, wenn Sie eine Ajax-Anfrage senden, ein und wartet darauf, dass er beendet wird. AJAX ist definitionsgemäß ein asynchroner Aufruf und soll so bleiben. –
@proteus Sind Sie sicher, dass die URL: @ Url.Action (Create, ReportScheduler) richtig ist? –