列表中的Razor复选框始终为false

时间:2015-10-27 11:06:12

标签: c# asp.net-mvc razor

在我的课堂上,我有更多属性,并且在提交表格后检查时都具有良好的价值 所有变量都很好,除了总是假的bool。 有人能帮我吗? 我的班级:

public class Pilot
{
    .....
    public bool OwnerOrPart { get; set; }
    .....
}

我的模特:

public class IardModel : RepositoryCollection
{
    .......
    public List<Pilot> Pilot { get; set; }
    .....
    public IardModel()
    {
        .....
        Pilot = new List<Pilot>();
        .....
    }
}

控制器: public ActionResult Aeronef(IardModel model, string id) { if (id != "") { using (var scope = RepositoryContainer.Container.BeginLifetimeScope()) { var repository = scope.Resolve(); model = repository.SingleById(id); model.IsEditing = true; return View(model); } } model.IsEditing = false; return View(model); } 并且观点:

@if (Model.Pilot.Count == 0)
{
    ....
    <section class="col col-md-2">
        <label class="label-form">(Co)Propriétaire</label>
        <label class="checkbox">
            <input name="Pilot[0].OwnerOrPart" type="checkbox" class="form-control">
            <i></i>
        </label>
    </section>
}
@foreach (var pilots in Model.Pilot)
{
    ....
    <section class="col col-md-2">
        <label class="label-form">(Co)Propriétaire</label>
        <label class="checkbox">
            <input name="Pilot[@(Model.Pilot.IndexOf(pilots))].OwnerOrPart" type="checkbox" class="form-control" @(pilots.OwnerOrPart ? "checked='checked'" : "")>
             <i></i>
         </label>
    </section>
}

所有变量都很好,除了总是假的bool。 有人可以帮助我

2 个答案:

答案 0 :(得分:0)

您可以使用@Html.CheckBoxFor(m => m.Pilot[0].OwnerOrPart, new {@class = "form-control"})代替<input type="checkbox" />

修改

我已经写了与此相对应的代码,

@if (Model.Pilot.Count == 0)
{
    ....
    <section class="col col-md-2">
        <label class="label-form">(Co)Propriétaire</label>
        <label class="checkbox">
            @Html.CheckBoxFor(m => m.Pilot[0].OwnerOrPart, new {@class = "form-control"})
            <i></i>
        </label>
    </section>
}

你可以简单地把它写成,

@for(int i=0; i < Model.Pilot.Count; i++){
    ....
    <section class="col col-md-2">
        <label class="label-form">(Co)Propriétaire</label>
        <label class="checkbox">
        @Html.CheckBoxFor(m => m.Pilot[i].OwnerOrPart, new {@class = "form-control"})
        <i></i>
        </label>
    </section>
}

答案 1 :(得分:0)

您最好使用:<input ... @(pilots.OwnerOrPart ? "checked='true'" : "")>

看到这个
How do I set a checkbox in razor view?
这个
Proper usage of .net MVC Html.CheckBoxFor