C# 在MVC4中处理复选框值
我在MVC视图中的表单中有一个复选框,如下所示:C# 在MVC4中处理复选框值,c#,asp.net,asp.net-mvc,asp.net-mvc-4,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 4,我在MVC视图中的表单中有一个复选框,如下所示: <div class="row" style="width: 98%;"> <div class="col-md-1" style="width: 22%;">Active</div> <div class="col-md-1" style="width: 23%;"> <input type="checkbox" ID="chb_Active" style="color: #
<div class="row" style="width: 98%;">
<div class="col-md-1" style="width: 22%;">Active</div>
<div class="col-md-1" style="width: 23%;">
<input type="checkbox" ID="chb_Active" style="color: #428bca;">
</div>
<div class="col-md-1" style="width: 22%;">Inactive</div>
<div class="col-md-1" style="width: 23%;">
<input type="checkbox" ID="chb_Inactive" style="color: #428bca;">
</div>
<div class="col-md-1" style="width: 20%;"></div>
</div>
这就是我处理所有其他控件(如dropdownlist)的方式,这些控件工作正常并获取选定的值
问题出现在复选框值上,它们总是设置为False,即使我选中或取消选中它们,它们总是返回False
我是MVC新手,请帮助我或为我指出正确的方向。我尝试过没有表单收集和表单仍然没有积极的结果
大多数与此相关的档案在这种情况下都没有帮助,因为它们的复选框中都有值 表单输入不是在
id
属性上拾取的,而是在name
属性上拾取的
将输入更改为:
<input type="checkbox" name="chb_Active" ...
看来你现在可以做了
@model ProjectName.ViewModels.ControllerName.MethodNameViewModel
<div class="row" style="width: 98%;">
<div class="col-md-1" style="width: 22%;">
@Html.DisplayNameFor(x => x.Active)
</div>
<div class="col-md-1" style="width: 23%;">
@Html.EditorFor(x => x.Active, new { style = "color: #428bca" })
</div>
@* Same for other field *@
这里有两个问题: 首先,HTML输入需要一个
name
属性,而不仅仅是id
,因为它是表单集合中用作键的名称
其次,他们需要一个价值观。这是一个棘手的问题,也是复选框的一个古老问题。默认情况下,如果选中复选框,浏览器将提交与该复选框关联的值,如果未选中,则不会提交任何内容。因此,要使复选框在选中时提交true
,在未选中时提交false
,您需要执行以下操作:
<input type="checkbox" ID="chb_Active" name="chb_Active" value="true" style="color: #428bca;">
<input type="hidden" name="chb_Active" value="false">
我认为你的插入编辑下一个更好的方式来做这是一个很好的答案,但原来的答案,在此之前,是误导。简单地将name属性添加到OP的原始代码中并不能解决问题,您也没有解释why@BenGriffiths啊,刚看完你的答案,我明白你的意思了。我会在我的答案中添加你的参考:)谢谢你,这有效了…很抱歉没有及时接受答案。他不在办公室。
@model ProjectName.ViewModels.ControllerName.MethodNameViewModel
<div class="row" style="width: 98%;">
<div class="col-md-1" style="width: 22%;">
@Html.DisplayNameFor(x => x.Active)
</div>
<div class="col-md-1" style="width: 23%;">
@Html.EditorFor(x => x.Active, new { style = "color: #428bca" })
</div>
@* Same for other field *@
[HttpPost]
public ActionResult MethodName(MethodNameViewModel methodNameViewModel)
{
var active = methodNameViewModel.Active;
var inactive = methodNameViewModel.Inactive
// ... etc
}
<input type="checkbox" ID="chb_Active" name="chb_Active" value="true" style="color: #428bca;">
<input type="hidden" name="chb_Active" value="false">
public ActionResult MethodName(string submit, bool chb_Active) {
// ...
}