使用MVC 5,我在Razor视图上有一个布尔属性的单选按钮,一个简单的是或否选择,如下所示:
<td class="warning">@Html.LabelFor(model => model.HeartCondition)</td>
<td class="info">Yes @Html.RadioButtonFor(model => model.HeartCondition, true, new { @class = "radio" })</td>
<td class="info">No @Html.RadioButtonFor(model => model.HeartCondition, false, new { @class = "radio"})</td>
<a role="button" class="btn btn-primary btnnav" id="SaveParQ">Save & Next</a>
当我向视图传递true或false值时,会选择相应的单选按钮,并选中=&#34;选中&#34;属性。然后我想保存值,而不必重新加载页面,我试图用jquery做,这就是问题所在。如果我将真实值传递给视图,那么&#34;是&#34;单选按钮被选中并具有checked属性,但是当我单击&#34; no&#34;单选按钮,&#34; no&#34;按钮确实被选中,但被检查的属性仍然在&#34;是&#34;按钮,并且不会更改为&#34; no&#34;按钮,这是我认为它会完成的。
我的jquery看起来像这样:
//Save ParQ
$("body").on("click", "#SaveParQ", function (e) {
preventDefaultAction(e);
var url = GetUrlPath() + "/PreAssessment/SaveParQ";
var parQId = $("#ParQId").val();
var heartCondition = false;
if ($("input[name='heartCondition']:checked").val()) {
heartCondition = true;
}
var viewModel = new ParQViewModel(parQId, heartCondition);
$.ajax({
type: "POST",
cache: false,
url: url,
data: JSON.stringify(viewModel),
contentType: 'application/json; charset=utf-8',
success: function (result) {
if (result.success === true) {
showFullScreenLoadMask(false);
$("#ParQId").val(result.ParQId);
}
},
error: function (responseText, textStatus, errorThrown) {
alert('Error - ' + errorThrown);
}
});
});
我不确定我的jquery是否正确,但如果是的话,它并没有注册我改变&#34;是&#34; to&#34; no&#34;,因为checked属性保留在原始元素上。任何人都可以帮助我找到正确的方法吗?
答案 0 :(得分:2)
删除以下代码行
var heartCondition = false;
if ($("input[name='heartCondition']:checked").val()) {
heartCondition = true;
}
并替换为
var heartCondition = $("input[name='HeartCondition']:checked").val();
会根据所选的单选按钮将值设置为true
或false
。