【发布时间】:2017-10-26 17:37:01
【问题描述】:
我正在使用 .NET MVC 为新用户创建 IQ 测试。目前,我有表单设置发布到数据库:
<div class="form-group">
<input type="button" class="btn btn-default personality-finish-btn" value="send" />
</div>
但出于引导验证的原因,我需要像这样切换到 type="submit":
<div class="form-group">
<input type="submit" class="btn btn-default personality-finish-btn" value="Submit" />
</div>
当通过单击提交按钮发布表单时,我收到了一个关于 MVC 的严重错误,如下所示:
'参数字典包含方法'System.Threading.Tasks.Task`1[System.Web.Mvc.JsonResult] PersonalityEvaluation(System .String, Boolean)' 在“TechAcademyLMS.Controllers.RegistrationController”中。可选参数必须是引用类型、可空类型或声明为可选参数。 参数名称:parameters'
仅当从“按钮”类型更改为“提交”类型时才会发生这种情况。由于我没有在我的发布逻辑的任何地方调用按钮,我相信这一定是一个内置的 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 的全部意义在于保持在同一页面上)。只需正常提交即可。
-
@StephenMuecke 看,这不是我的项目,这是我的公司,所以这不是我的决定。不需要态度,只需要帮助 - 谢谢。
-
也发布您的控制器操作方法。
标签: c# html asp.net-mvc forms twitter-bootstrap