【发布时间】:2015-04-03 14:25:37
【问题描述】:
我有以下型号:
public class TaskViewModel{
//other properties are omitted for brevity
public bool IsUnderControl{get;set;}
}
另一方面,我将这两个 DOM 元素手动绑定到模型属性:
<input type="checkbox" name="IsUnderControl" value="true"/>
<input type="hidden" name="IsUnderControl" value="false" />
现在,提交后,IsUnderControl 的值即使选中复选框也是 false。这是 POST 方法:
[HttpPost]
public void SaveTask(TaskViewModel tvm){
//When I debug the code I see that tvm.IsUnderControl=false
if (ModelState.IsValid){
//I save the task to repository
}
}
*注意:当我检查复选框时,我发现元素复选框属性中没有 checked="checked"。
编辑:这是我用来创建相应输入元素的 javascript:
$('#taskConfig').
append('<input type="checkbox" value="true"
name="IsUnderControl"/>').append('<input type="hidden" value="false"
name="IsUnderControl"/>');
【问题讨论】:
-
您是否尝试过使用 HTML Helper 代替?
@Html.CheckBoxFor(m => m.IsUnderControl) -
那是
public bool IsUnderControl { get; set; }吗? POST 方法的签名是什么? -
我认为您没有将模型属性与复选框绑定。尝试使用 Html.Checkbox 或 Html.CheckboxFor。
-
是的,@StephenMuecke,它是公开的。我也添加了 POST 方法
-
checked="checked"仅在您使用@Html.CheckBoxFor(m => m.IsUnderControl)实际绑定到您的属性并且IsUnderControl的值为true时才会设置
标签: asp.net-mvc checkbox model-binding