我想填充表单数据库的dropdownlist但是出现此错误...有人可以帮我解决此错误
无法隐式转换类型' ORS.DTO.GenderDTO'到' System.Collections.Generic.IEnumerable'。存在显式转换(您是否错过了演员?)
我必须填充性别的dropdownlist,并且必须获取存储在数据库中的值...
public IEnumerable<GenderDTO> GetGenderList()
{
GenderDTO model = new GenderDTO();
var gender = from g in db.CAT_GENDER
select g;
model.GenderList = new SelectList(gender, "ID", "Description");
return model;
}
GenderDTO课程
public class GenderDTO
{
public int ID { get; set; }
public string Description { get; set; }
public SelectList GenderList { get; set; }
}
CAT_GENDER
public partial class CAT_GENDER
{
public CAT_GENDER()
{
USER_PROFILE = new HashSet<USER_PROFILE>();
}
public int ID { get; set; }
[Required]
[StringLength(50)]
public string DESCRIPTION { get; set; }
public int STATUS_ID { get; set; }
public virtual CAT_RECORD_STATUS CAT_RECORD_STATUS { get; set; }
public virtual ICollection<USER_PROFILE> USER_PROFILE { get; set; }
}
答案 0 :(得分:1)
您的方法返回IEnumerable<GenderDTO>
:
public IEnumerable<GenderDTO> GetGenderList()
但您尝试返回GenderDTO
:
GenderDTO model = new GenderDTO();
//...
return model;
他们有两种不同的类型。如果希望方法返回一个对象,请更改方法:
public GenderDTO GetGenderList()
另一方面,如果要返回一组对象,请更改返回类型:
return new List<GenderDTO> { model };
很可能您想要第一个选项。总是返回一个对象的集合会有点愚蠢。虽然,公平地说,但这并不是很清楚这个GenderDTO
模型应该代表什么。您永远不会设置ID
或Description
属性。
答案 1 :(得分:0)
您正在使用代表return model;
类型的单个对象的GenderDTO
,从问题描述看,您必须返回单个对象而不是集合。修改方法签名并从返回类型中删除IEnumerable
。
但是,如果你必须返回一个IEnumerable<GenderDTO>
,那么你必须在你的代码中创建它并返回它:
类似的东西:
return gender.Select(r => new GenderDTO
{
ID = r.ID,
Description = r.DESCRIPTION,
GenderList = new SelectList(gender, "ID", "Description")
};