我正在使用.NET MVC爲新用戶創建一個IQ測試。目前,我有如下形式安裝後與數據庫:爲什麼不能輸入「提交」不適用於Form?
<div class="form-group">
<input type="button" class="btn btn-default personality-finish-btn" value="send" />
</div>
但對於引導驗證的原因,我需要切換爲type =「提交」,像這樣:
<div class="form-group">
<input type="submit" class="btn btn-default personality-finish-btn" value="Submit" />
</div>
當張貼通過點擊提交按鈕的形式,我與MVC長討厭的錯誤線沿線的:
「的參數字典包含參數無效項'非空類型的‘通行證System.Boolean’的方法'System.Threading.T在'TechAcademyLMS.Controllers.RegistrationController'中詢問[1] [System.Web.Mvc.JsonResult] PersonalityEvaluation(System.String,Boolean)'。可選參數必須是引用類型,可爲空類型,或者聲明爲可選參數。 參數名稱:參數'
這隻發生在從類型「按鈕」更改爲「提交」類型時。由於我不會在發佈邏輯中的任何位置調用按鈕,因此我相信這必須是內置的HTML問題。
任何線索將不勝感激,謝謝。
編輯:
這是我一直在使用的當前驗證邏輯。我之前沒有使用bool,所以我不知道爲什麼我現在需要:
$(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
});
}
錯誤很明顯 - 您的提交按鈕調用'PersonalityEvaluation()'方法,該方法需要'bool',但是您不會將值傳遞給該參數。 –
@StephenMuecke請參閱最新的答案。當它工作時,我一直在使用與之前相同的邏輯。我不知道我是否應該改變邏輯,但如果可能,我不想。 –
因爲當你點擊按鈕時你不取消默認提交,所以你進行了正常的提交和ajax提交。但是,這有什麼意義呢 - 爲什麼在這個世界中,當你想在動作完成後重定向的時候使用ajax(使用ajax的全部重點就是保持在同一頁面上)。只需進行正常提交。 –