我尝试使用IEnumerable使用下拉列表绑定数据库。但它显示的错误如下图所示。
我的模型(CustomerViewModel)
@Directive({
selector: '[slider]'
})
export class sliderDirective{
private el: HTMLElement;
constructor(@Inject(ElementRef) private elementRef: ElementRef) {
this.el = elementRef.nativeElement;
}
ngAfterViewChecked() {
$(this.el).slick({
infinite: false,
slidesToShow: 1,
slidesToScroll: 1
});
}
}
我的控制器
public Nullable<System.Guid> AreaID { get; set; }
public string Area { get; set; }
public IEnumerable<SelectListItem> AreaList { get; set; }
我的观看代码
public ActionResult Create ()
{
CustomerViewModel cvm = new CustomerViewModel();
cvm.AreaList = db.Areas.Where(a => a.IsDeleted == false).Select(a => new SelectListItem()
{
Value = a.AreaID.ToString(),
Text = a.DisplayName
});
return View();
}
答案 0 :(得分:1)
你的代码工作正常。问题是您正在创建一个使用.ToString()
方法的查询,该方法无法转换为DB等效语法。
要使其有效,您需要使用.ToList()
从数据库中选择项目,然后创建SelectListItem
cvm.AreaList = db.Areas.Where(a => a.IsDeleted == false).ToList().Select(a => new SelectListItem()
{
Value = a.AreaID.ToString(),
Text = a.DisplayName
});