Ich habe eine Teilansicht, die eine Dateieingabe für das Hochladen von Dateien enthält. Ein Benutzer auf dieser Ansicht wählt eine Datei von ihrem Arbeitsplatz aus und klickt auf die Schaltfläche "Hochladen". Der Klick auf die Schaltfläche "Hochladen" sendet das Formular an eine Aktionsmethode, und die Dateien werden analysiert. Anschließend wird dieselbe Ansicht zurückgegeben, um einige Felder automatisch auszufüllen.
Alles funktioniert perfekt. Ich füge der vorhandenen Ansicht eine neue Anforderung hinzu, die wie folgt lautet:
Anforderung
Benutzer wählen eine Datei aus und klicken auf die Schaltfläche "Hochladen". Sobald die Schaltfläche "Hochladen" geklickt wird, wird ein JavaScript-Bestätigungsdialog mit zwei Schaltflächenoptionen angezeigt, bevor das Formular an die Kontrolleraktionsmethode gesendet wird. Diese Schaltflächen sind "Buffer Run Parsing" und "Normal Parsing". Durch Klicken auf eine dieser Schaltflächen wird an die Kontrolleraktionsmethode gesendet.
In der Kontrolleraktionsmethode beim Posten lautet mein Ziel, welche Schaltfläche sie gedrückt haben zu erfassen und basierend auf der gedrückten Schaltfläche die Datei-Analyse-Logik auszuwählen.
Das Problem
Ich habe eine JavaScript-Funktion erstellt, die die beiden Schaltflächen anzeigt, aber das Dialogfeld verschwindet automatisch und das Formular wird an den Kontroller gepostet. Ich möchte, dass es nicht gepostet wird, bis ich eine der Schaltflächen mit der Bestätigung klicke.
Hier ist, was ich tue:
Hauptansicht:
@using (Html.BeginForm("Create", "RunLogEntry", FormMethod.Post, new { id = "form", enctype = "multipart/form-data"}))
{
@Html.Partial("_RunLogEntryPartialView", Model)
}
Teilansicht:
Hochladen
JS-Funktion:
function initUploadDailog(e) {
currentForm = $(this).closest('form');
UploadDialog = $("#uploadConfirmation").dialog({
modal: true,
width: 400,
autoOpen: true,
title: 'Bitte wählen Sie den Parsertyp für die Test abgeschlossene Berechnung',
buttons: {
"Normal Parsing": function () {
$("#hiddenInput").val("Normal");
alert(currentForm.innerHtml());
currentForm.submit();
},
"Buffer Parsing": function () {
$("#hiddenInput").val("Buffer Run");
currentForm.submit();
}
}
});
}
Kontroller:
[HttpPost]
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create(RunLogEntry runLogEntry, String ServiceRequest, string Hour, string Minute, string AMPM,
string submit, IEnumerable file, String AssayPerformanceIssues1, List Replicates)
{
}