我的模型中有bool属性。渲染视图时,其值为false。但是当我提交表单时,TRUE的值将传递给控制器。我正在使用自定义js函数从表单中获取值以提交到控制器操作。我不确定如何从复选框中获取正确的值。
我的模特财产:
public bool RushOrderFlag { get; set; }
视图标记:
@Html.EditorFor(model => model.RushOrderFlag)
HTML呈现:
<input class="chkbx" data-val="true" data-val-required="The Rush? field is required." id="RushOrderFlag" name="RushOrderFlag" type="checkbox" value="true">
<input name="RushOrderFlag" type="hidden" value="false">
我的JS功能
function GetFilterCriteria() {
var Criteria = {};
$('#frmCriteria input').each(function () {
Criteria[this.name] = $("#" + this.name).val();
});
return Criteria;
};
即使在控制台中我放了$('[name =“RushOrderFlag”]')。val(),在点击和关闭复选框后,它总是返回true。
我做错了什么?
答案 0 :(得分:0)
试
function GetFilterCriteria() {
var Criteria = {};
$('#frmCriteria input').each(function () {
Criteria[this.name] = false;
if ($("#" + this.name).is(':checked'))
Criteria[this.name] = true;
});
return Criteria;
};
答案 1 :(得分:0)
感谢大家提示......最后由于剃刀为复选框创建2个输入控件的方式,它必须更复杂一些。所以这就是我必须做的事情:
function GetFilterCriteria() {
var Criteria = {};
$('#frmCriteria input').each(function () {
if ($(this).attr('type') != 'hidden') {
if ($(this).attr('type') == 'checkbox') {
Criteria[this.name] = this.checked;
} else {
Criteria[this.name] = $("#" + this.name).val();
}
}
});
return Criteria;
};
我不喜欢它,因为如果我想要一个隐藏的输入,这将跳过它。但是现在它有效。我发现很难相信它必须是这么困难:(
答案 2 :(得分:0)
您可以尝试使用.CheckBoxFor()
,只会获得一个输入元素。
对于您可以使用的已检查属性:
$('#CurrentMailTemplateEnabled').get()[0].checked
通过首先获取DOM元素来获取值。至少那对我有用。