首页 > 解决方案 > 我在视图中使用包含项目的列表,但它会引发转换错误,为什么?

问题描述

我正在使用带有 EF 和 Razor 页面的 .net 核心。

 List<BloodGroups> ListBloodGroups;
        public void OnGet()
        {
            BloodGroupsModel.ListBloodGroups = _donorsDBContext.GetBloodGroups();


        }

血型.cs

    public class BloodGroups
    {
        public BloodGroups() 
        {

        }

        [Key]
        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public int BloodGroupID { get; set; }
        public string BloodGroupName { get; set; }
        
        public List<BloodGroups> ListBloodGroups { get; set; }         

       

    }

在视野中

 <select asp-for="BloodGroupsModel.BloodGroupID" asp-items="Model.BloodGroupsModel.ListBloodGroups"></select>

但错误是

无法将通用列表转换为 IEnumerable。

我对此有点新并尝试过,但它不起作用我认为它应该起作用,因为从技术上讲,我正在调用基于模型的方法。

在 DonorsDBContext 类中

   public List<BloodGroups> GetBloodGroups()
        {

            var list = new List<BloodGroups>();

            list = this.BloodGroups.ToList();

            return list;
        }

标签: c#asp.net-corerazorentity-framework-corerazor-pages

解决方案


尝试这个:

public List<SelectListItem> GetBloodGroups()
 {
       return  _donorsDBContext.Select( i=> new SelectListItem
         {
         Value = i.BloodGroupID.ToString(),
         Text = i.BloodGroupName 
         }).ToList();
}

并更改您的血型:

public List<SelectListItem> ListBloodGroups {get; set;}

推荐阅读