使用Linq填充下拉列表?

时间:2016-11-02 19:24:05

标签: asp.net-core ienumerable selectlist selectlistitem

Asp.NetCore EntityFrameWorkCore 存储库模式

我的项目构建然后下拉列表显示一些命名空间: Dropdown display namespace code instead of commodities

这是我的代码:

型号:

    public partial class Commodity
    {
        public Commodity()
        {

        }
        public IEnumerable<SelectListItem> CommodityCodes { get; set; };
        [Key]
        public Guid Oid { get; set; } = Guid.NewGuid();
        public string Code { get; set; }
        public string Description { get; set; }
}

Interface + Repository:

public interface ICommodityRepository
{


    IEnumerable<Commodity> ListAll();
    IEnumerable<string> GetCommodityDropDown();
    IEnumerable<SelectListItem> GetSelectListItems(IEnumerable<string> elements);

}

Repository:
        public IEnumerable<string> GetCommodityDropDown()
        {
            Commodity model = new Commodity();
            var commodities = from c in model.Oid.ToString()
                              select c;
            return new List<string>
            {
                commodities.ToString()

            };
        }
        public IEnumerable<SelectListItem> GetSelectListItems(IEnumerable<string> elements)
        {
            var selectList = new List<SelectListItem>();

            foreach (var element in elements)
            {
                selectList.Add(new SelectListItem
                {
                    Value = element,
                    Text = element
                });
            }

            return selectList;
        }

控制器:

public IActionResult Index()
{
    var codes = _commodityRepository.GetCommodityDropDown();
    var model = new Commodity();
    model.CommodityCodes = _commodityRepository.GetSelectListItems(codes);
    return View(model);
}

最后我的观点是:

&#13;
&#13;
  <div class="form-group">
  @Html.DropDownListFor(m => m.Code, Model.CommodityCodes,
 "- Please select a Commodity -",new { @class = "form-control" })
  </div>
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:1)

这样做......

decltype(returning expression)