如何使用MVC5中的下拉列表绑定数据库?

时间:2016-07-20 12:22:05

标签: c# asp.net-mvc-5

我尝试使用IEnumerable使用下拉列表绑定数据库。但它显示的错误如下图所示。

enter image description here

我的模型(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();
   }

1 个答案:

答案 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
});