使用 Linq 填充下拉列表?
Populate a dropdown using Linq?
Asp.NetCore
实体框架工作核心
存储库模式
我的项目构建但是下拉列表在这里显示了一些命名空间:
这是我的代码:
型号:
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; }
}
接口 + 存储库:
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);
}
最后是我的观点:
<div class="form-group">
@Html.DropDownListFor(m => m.Code, Model.CommodityCodes,
"- Please select a Commodity -",new { @class = "form-control" })
</div>
这样做...
public interface ICommodityRepository
{
SelectList ListAll();
}
public class CommodityRepository : ICommodityRepository
{
private DataBaseContext db = new DataBaseContext ();
// Note: Your database context should define this property:
// public DbSet<Commodity> CommoditySet{ get; set; }
public SelectList ListAll(){
return new SelectList( db.CommoditySet, "Oid", "Oid" );
}
}
Define a view model:
Note: You shouldn't use your model here. Define a view model instead
public class CommodityViewModel
{
public string Code{ get; set; }
public SelectList CommodityCodes{ get; set; }
}
Controller:
public IActionResult Index()
{
CommodityViewModel viewModel= new CommodityViewModel();
viewModel.CommodityCodes= repository.ListAll();
return View(viewModel);
}
view:
<div class="form-group">
@Html.DropDownListFor(m => m.Code, Model.CommodityCodes,
"- Please select a Commodity -",new { @class = "form-control" })
</div>
Asp.NetCore 实体框架工作核心 存储库模式
我的项目构建但是下拉列表在这里显示了一些命名空间:
这是我的代码:
型号:
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; }
}
接口 + 存储库:
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);
}
最后是我的观点:
<div class="form-group">
@Html.DropDownListFor(m => m.Code, Model.CommodityCodes,
"- Please select a Commodity -",new { @class = "form-control" })
</div>
这样做...
public interface ICommodityRepository
{
SelectList ListAll();
}
public class CommodityRepository : ICommodityRepository
{
private DataBaseContext db = new DataBaseContext ();
// Note: Your database context should define this property:
// public DbSet<Commodity> CommoditySet{ get; set; }
public SelectList ListAll(){
return new SelectList( db.CommoditySet, "Oid", "Oid" );
}
}
Define a view model:
Note: You shouldn't use your model here. Define a view model instead
public class CommodityViewModel
{
public string Code{ get; set; }
public SelectList CommodityCodes{ get; set; }
}
Controller:
public IActionResult Index()
{
CommodityViewModel viewModel= new CommodityViewModel();
viewModel.CommodityCodes= repository.ListAll();
return View(viewModel);
}
view:
<div class="form-group">
@Html.DropDownListFor(m => m.Code, Model.CommodityCodes,
"- Please select a Commodity -",new { @class = "form-control" })
</div>