1

我的模型中有一个 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。

我究竟做错了什么?

4

3 回答 3

0

尝试

function GetFilterCriteria() {
var Criteria = {};
$('#frmCriteria input').each(function () {
    Criteria[this.name] = false;
    if ($("#" + this.name).is(':checked'))
        Criteria[this.name] = true;

});
return Criteria;
};
于 2013-02-15T03:55:20.383 回答
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;
};

我不喜欢它,因为如果我想要一个隐藏的输入,这将跳过它。但现在它有效。我很难相信它必须如此困难:(

于 2013-02-15T15:32:56.237 回答
0

你可以尝试使用.CheckBoxFor()你只会得到一个输入元素。

对于选中的属性,您可以使用:

$('#CurrentMailTemplateEnabled').get()[0].checked 

通过首先获取 DOM 元素来获取值。至少这对我有用。

于 2013-04-10T18:22:03.697 回答