C# asp.net mvc@Html.CheckBoxFor

C# asp.net mvc@Html.CheckBoxFor,c#,.net,asp.net-mvc,asp.net-mvc-4,razor,C#,.net,Asp.net Mvc,Asp.net Mvc 4,Razor,我的表格中有复选框 我在我的模型上加了一句 using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace CorePartners_Site2.Models { public class CareerForm { //.... public List<CheckBoxes> EmploymentType { get;

我的表格中有复选框

我在我的模型上加了一句

 using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Web;

 namespace CorePartners_Site2.Models
 {
public class CareerForm
     {
    //....
    public List<CheckBoxes> EmploymentType { get; set; } 
      }
 }

 public class CheckBoxes
 {
     public string Text { get; set; }
     public bool Checked { get; set; }
 }
但是我弄错了


怎么了?

复选框for
接受一个
bool
,您正在向它传递一个
列表。您需要执行以下操作:

@for (int i = 0; i < Model.EmploymentType.Count; i++)
{
    @Html.CheckBoxFor(m => m.EmploymentType[i].Checked, new { id = "employmentType_" + i })
    @Html.HiddenFor(m => m.EmploymentType[i].Text)
    @Html.DisplayFor(m => m.EmploymentType[i].Text)
}
使用此代码:

@for (int i = 0; i < Model.EmploymentType.Count; i++)
{
    @Html.HiddenFor(m => m.EmploymentType[i].Text)
    @Html.CheckBoxFor(m => m.EmploymentType[i].Checked, new { id = "YourId" })
}
@for(int i=0;im.EmploymentType[i].Text)
@CheckBoxFor(m=>m.EmploymentType[i]。选中,新建{id=“YourId”})
}

Html。CheckBoxFor
需要一个
Func
作为第一个参数。因此,您的lambda必须返回一个
bool
,您当前正在返回
列表的一个实例:

您需要迭代
列表
,以输出每个复选框:

@for (int i = 0; i < Model.EmploymentType.Count; i++)
{
    @Html.HiddenFor(m => m.EmploymentType[i].Text)
    @Html.CheckBoxFor(m => m.EmploymentType[i].Checked, 
              new { id = string.Format("employmentType_{0}", i) })
}
@for(int i=0;im.EmploymentType[i].Text)
@Html.CheckBoxFor(m=>m.EmploymentType[i]。选中,
新的{id=string.Format(“employmentType_{0}”,i)})
}

如果在同一时间只选中一个复选框,请改用RadioButton:

      @Html.RadioButtonFor(model => model.Type,1, new { @checked = "checked" }) fultime
      @Html.RadioButtonFor(model => model.Type,2) party
      @Html.RadioButtonFor(model => model.Type,3) next option...
如果可以同时检查一个或多个,请使用优秀的扩展名::


希望,这会有帮助

@Heidel是的,我试过了,但我得到了这个。怎么了?我应该在我的模型中添加一些东西吗?@Heidel检查我的编辑,你需要填充
EmploymentType
列表。@Heidel名称必须是这样的,这样当你发布表单时,模型绑定器可以正确绑定回你的列表。
model => model.EmploymentType
@for (int i = 0; i < Model.EmploymentType.Count; i++)
{
    @Html.HiddenFor(m => m.EmploymentType[i].Text)
    @Html.CheckBoxFor(m => m.EmploymentType[i].Checked, 
              new { id = string.Format("employmentType_{0}", i) })
}
      @Html.RadioButtonFor(model => model.Type,1, new { @checked = "checked" }) fultime
      @Html.RadioButtonFor(model => model.Type,2) party
      @Html.RadioButtonFor(model => model.Type,3) next option...