【问题标题】:Checkbox carries the value but not the title复选框带有值但不带有标题
【发布时间】:2024-05-16 21:10:02
【问题描述】:

我有一个多对多的关系,我已经实现并且工作得很好,现在我想在一个可以在中间表中插入数据的实体的“插入”页面上有一组复选框。

我有一个 ViewModel,它包含以下类的数组:

class CategoryManager {
   public int id { get; set; }
   public string Title { get; set; }
   public bool Checked { get; set; }
}

在视图上,我有以下行来为每个数组成员创建复选框:

for (int i = 0; i < Model.categories.Count(); i++)
    {
        @Html.CheckBoxFor(m => m.categories[i].Checked)<i>&nbsp</i>
        @Model.categories[i].Title <br/>
    }

现在我注意到的是,当提交页面并将整个 ViewModel 发送回控制器时,在“CategoryManager”的数组中,每个实例都有 ID 并且“已检查”正确通过(取决于关于用户是否标记了复选框),但是,所有这些的“标题”都是NULL。

我知道这应该是我缺少的一个非常基本的东西,但我是新手;)

非常感谢您!

【问题讨论】:

    标签: asp.net-mvc entity-framework razor ef-code-first


    【解决方案1】:

    您没有为属性Title(或ID 生成控件,因此不确定如何将其发回)。为Title 属性添加隐藏输入

    for (int i = 0; i < Model.categories.Count; i++)
    {
        @Html.CheckBoxFor(m => m.categories[i].Checked)
        @Html.LabelFor(m => m.categories[i].Checked, "Model.categories[i].Title")
        @Html.HiddenFor(m => m.categories[i].ID)
        @Html.HiddenFor(m => m.categories[i].ID)
    }
    

    注意使用LabelFor() 来创建与复选框关联的标签。

    【讨论】: