绑定到SelectList会生成名称ID不正确的错误,即使实体包含所述属性

本文关键字:错误 实体 属性 包含所 不正确 SelectList ID 绑定 | 更新日期: 2023-09-27 17:57:40

我正在控制器中绑定4个SelectList,当我调出呈现Drop Down Lists的页面时,我会看到错误:

DataBinding:"System.Boolean"不包含名为"ID"的属性。

但在它从中提取的实体中有一个ID属性,所以我不确定出了什么问题。

代码错误弹出:

model.Sections = new SelectList(db.Sections.Select(s => s.ID > 0), "ID", "Name").ToList();

这是整个Section的定义,正如你所看到的,有一个名为ID 的属性

public class Section
{
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public Int16 ID { get; set; }
    public Int64? LogoFileID { get; set; }
    [Required, MaxLength(100)]
    public string RouteName { get; set; }
    [Required, MaxLength(15)]
    public string Type { get; set; }
    [Required]
    public string Title { get; set; }
    [Column(TypeName = "varchar(MAX)")]
    public string Synopsis { get; set; }
    [ForeignKey("LogoFileID")]
    public virtual File Logo { get; set; }
}

这是视图中的调用:

@Html.DropDownListFor(m => m.SelectedSection, Model.Sections)

以及ViewModel中的属性:

[DisplayName("Original Release Name")]
public IEnumerable<SelectListItem> Sections { get; set; }
public Int16 SelectedSection { get; set; }

我不太确定我做错了什么,因为Section确实包含ID。我哪里错了?

绑定到SelectList会生成名称ID不正确的错误,即使实体包含所述属性

db.Sections.Select(s => s.ID > 0)

这意味着选择s.ID>0的RESULT,因此您将得到一个IEnumerable<bool>。也许您的意思是db.Sections.Where(s => s.ID > 0)——这将返回ID>0的Sections列表。