使用 MVC 5,我在 Razor View 上有一个 bool 属性的单选按钮,一个简单的是或否选择,如下所示:
<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 值传递给 View 时,相应的单选按钮被选中,并且具有 checked="checked"属性。然后我想保存值而不必重新加载页面,这是我尝试使用 jquery 做的,这就是问题所在。如果我向 View 传递一个真值,"is"单选按钮被选中并具有选中的属性,但是当我单击“否”单选按钮时,“否”按钮确实被选中,但选中的属性仍然是在"is"按钮上,并且不会更改为“否”按钮,这是我认为它会完成的。
我的 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 是否正确,但如果正确,它不会注册我将"is"更改为“否”,因为已检查的属性保留在原始元素上。任何人都可以帮助以正确的方式实现我想要做的事情吗?
最佳答案
去掉下面几行代码
var heartCondition = false;
if ($("input[name='heartCondition']:checked").val()) {
heartCondition = true;
}
并替换为
var heartCondition = $("input[name='HeartCondition']:checked").val();
这将根据所选的单选按钮将值设置为 true
或 false
。
关于javascript - 无法使用 Jquery 获取 @Html.RadioButtonFor 的值,已检查属性未更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37299901/