Asp.net mvc 添加到控制器的Mvc复选框列表

Asp.net mvc 添加到控制器的Mvc复选框列表,asp.net-mvc,Asp.net Mvc,我想将复选框列表发送给控制器 foreach (var item in Model.Billeder) { @Html.ValidationSummary(true, "", new { @class = "text-danger" }) <div class="form-group"> @Html.LabelFor(ModelItem => item.Overskrift, htmlAttributes: new { @class = "

我想将复选框列表发送给控制器

 foreach (var item in Model.Billeder)
  {
    @Html.ValidationSummary(true, "", new { @class = "text-danger" })
    <div class="form-group">
        @Html.LabelFor(ModelItem => item.Overskrift, htmlAttributes: new { @class = "control-label col-md-2" }) @Html.DisplayFor(model => item.Overskrift)
        <div class="col-md-10">
            <div class="checkbox">
                @Html.EditorFor(ModelItem => item.Emailbool)
                @Html.ValidationMessageFor(ModelItem => item.Emailbool, "", new { @class = "text-danger" })
            </div>
        </div>
    </div>


}


    <div class="form-group">
        <div class="col-md-offset-2 col-md-10">
            <input type="submit" value="Send" class="btn btn-default" />
        </div>
    </div>

for each循环将不起作用,因为无法使用索引正确创建复选框元素名称,这将导致该元素无法在控制器中发回,因此请将其更改为使用for循环:

for (int i=0 i <Model.Billeder.Count; i++)
{
    @Html.ValidationSummary(true, "", new { @class = "text-danger" })
    <div class="form-group">
        @Html.LabelFor(ModelItem => Model.Billeder[i].Overskrift, htmlAttributes: new { @class = "control-label col-md-2" }) 
        @Html.DisplayFor(model => Model.Billeder[i].Overskrift)
        <div class="col-md-10">
            <div class="checkbox">
                @Html.EditorFor(ModelItem => Model.Billeder[i].Emailbool)
                @Html.ValidationMessageFor(ModelItem => Model.Billeder[i].Emailbool, "", new { @class = "text-danger" })
            </div>
        </div>
    </div>
}
for(int i=0 i Model.biller[i]。Overskrift,htmlAttributes:new{@class=“control label col-md-2”})
@DisplayFor(model=>model.biller[i].Overskrift)
@EditorFor(ModelItem=>Model.Biller[i].Emailbool)
@Html.ValidationMessageFor(ModelItem=>Model.bilder[i].Emailbool,“,new{@class=“text danger”})
}
而且您需要修改模型,使其具有
IList
,因为
ICollection
不支持索引

public virtual IList<Billed> Billeder { get; set; }
公共虚拟IList计费器{get;set;}

如果上面的属性在使用实体框架映射到表的模型中,那么您需要创建特定于视图的ViewModel类,而不是修改DTO模型。

Hey@Ehsan,要使其起作用,我还必须更改ICollection,对吗?感谢如果
ICollection
不支持索引,则是,您可以使用
IList
无法使用[]对“ICollection”类型的表达式应用索引,感谢它的工作:)
for (int i=0 i <Model.Billeder.Count; i++)
{
    @Html.ValidationSummary(true, "", new { @class = "text-danger" })
    <div class="form-group">
        @Html.LabelFor(ModelItem => Model.Billeder[i].Overskrift, htmlAttributes: new { @class = "control-label col-md-2" }) 
        @Html.DisplayFor(model => Model.Billeder[i].Overskrift)
        <div class="col-md-10">
            <div class="checkbox">
                @Html.EditorFor(ModelItem => Model.Billeder[i].Emailbool)
                @Html.ValidationMessageFor(ModelItem => Model.Billeder[i].Emailbool, "", new { @class = "text-danger" })
            </div>
        </div>
    </div>
}
public virtual IList<Billed> Billeder { get; set; }