我目前正在使用javascript来为复选框生成HTML,但是当我将表单发布到我的控制器时,控制器接受FormCollection作为参数。
然后,我将这些值放入字典,并检查字典中的值。其他复选框只返回一个值,而我的autoDiscovery复选框返回两个值,即'on'和'true',这对我来说没有意义。
下面是呈现的HTML
<div class="form-group">
<div class="col-md-10">
<label class="col-md-3 control-label" for="autoDiscovery">
<input id="autoDiscovery" type="checkbox" checked="" data-val="false" name="autoDiscovery">
<input type="hidden" name="autoDiscovery" value="true"> Auto Discovery
</label>
</div>
</div>下面是我用来分配复选框的javascript
function AssignCheckbox(variableName, jsonData, caption) {
var checked = jsonData == 1 ? 'checked' : '';
var value = jsonData == 1 ? 'true' : 'false';
return divFormGroupOpening + divOpeningInput +
'<label class="col-md-3 control-label" for="' + variableName + '">' + '<input id="' + variableName + '" type="checkbox" name="' + variableName + '" data-val="false"' + checked + '>' +
'<input type="hidden" value="' + value + '" name="' + variableName + '">' +
' ' + caption +'</label></div></div>';
}发布于 2015-07-02 09:43:18
检查使用@Html.CheckBoxFor()方法时生成的html。它产生
<input type="checkbox" name="autoDiscovery" value="true" ..... />
<input type="hidden" name="autoDiscovery" value="false" />你得模仿一下。当前,复选框元素没有value属性,因此如果在视图中选中它,它将回发"on“。而隐藏的输入值是"true",因此值也是posts。
同样重要的是,不要使用FormCollection。回发到模型,或者在方法- bool autoDiscovery中添加一个参数,这样DefaultModelBinder将根据复选框的选中状态正确地将值设置为true或false。
发布于 2015-07-02 09:39:50
您有两个input,它具有相同的name属性。当然,您会期望有两个值
<input id="' + variableName + '" name="' + variableName + '" '>'
<input type="hidden" name="' + variableName + '">' https://stackoverflow.com/questions/31180927
复制相似问题