Ich verwende .NET MVC, um einen IQ-Test für neue Benutzer zu erstellen. Derzeit habe ich das Formular-Setup auf die Datenbank schreiben mit:Warum wird "Senden" nicht mit Formular arbeiten?
<div class="form-group">
<input type="button" class="btn btn-default personality-finish-btn" value="send" />
</div>
Aber für Bootstrap-Validierung Gründen muss ich eingeben, um wechseln = „submit“ wie folgt:
<div class="form-group">
<input type="submit" class="btn btn-default personality-finish-btn" value="Submit" />
</div>
Wenn die Buchung Form durch den Absenden-Button klicken, erhalte ich einen lange bösen Fehler mit MVC entlang der Linien von:
‚die Parameter Wörterbuch enthält einen Nulleintrag für den Parameter‚pass‘von nicht-Nullable Types‚System.Boolean‘für Methode 'System.Threading.T asks.Task`1 [System.Web.Mvc.JsonResult] PersonalityEvaluation (System.String, Boolean) 'in' TechAcademyLMS.Controllers.RegistrationController '. Ein optionaler Parameter muss ein Referenztyp, ein Nullable-Typ oder ein optionaler Parameter sein. Parametername: Parameter
Dies geschieht nur, wenn sie von Typ ‚Schaltfläche‘ Ändern ‚Eintragen‘ eingeben. Da ich in meiner Postlogik keinen Knopf anrufe, bin ich sicher, dass dies ein eingebautes HTML-Problem sein muss.
Alle Leads würden sehr geschätzt werden, danke.
Edit:
Dies ist die aktuelle Validierungslogik I verwendet haben. Ich habe bisher nicht einen bool verwenden, so dass ich weiß nicht, warum ich brauchen würde, um jetzt:
$(document).ready(function() {
$(".personality-finish-btn").on("click", function() {
checkPersonalityRadio();
})
})
function checkPersonalityRadio() {
var pass = false;
var score = 0;
for (var i = 1; i < 51; i++) {
var value = $("input[name='eval-checkbox-" + i + "']:checked").val();
if (value !== undefined) {
score += parseInt(value);
}
};
if (score >= 35 && 50) {
score += " Pass";
pass = true;
} else if (score <= 34){
score += " Fail";
}
score = JSON.stringify(score);
$.ajax({
type: "POST",
url: "/Registration/PersonalityEvaluation",
data: { score: score, pass: pass },
success: function (response) {
window.location.href = "/Registration/StepTwelve";
},
dataType: "json",
error: function() {
console.log(data);
alert("Whoops, something went wrong.");
},
traditional: true
});
}
Der Fehler ist offensichtlich - Ihr Submit-Button ruft die 'PersonalityEvaluation()' Methode auf, die einen 'bool' erwartet, aber Sie übergeben keinen Wert an diesen Parameter. –
@StephenMuecke siehe aktualisierte Antwort. Ich habe die gleiche Logik wie zuvor verwendet, als es funktionierte. Ich bin mir nicht bewusst, ob ich die Logik ändern sollte, aber ich möchte nicht, wenn möglich. –
Da Sie die Standard-Absenden nicht abbrechen, wenn Sie auf die Schaltfläche klicken, machen Sie eine normale Absenden und eine Ajax-Absendung. Aber was soll das? Warum in der Welt benutzt du Ajax, wenn du umleiten willst, nachdem die Aktion abgeschlossen ist (der ganze Sinn von Ajax besteht darin, auf derselben Seite zu bleiben). Mach einfach einen normalen Beitrag. –